blob: 9e0fd8dc658d829f8862a6fe678ff420b2548f6a [file] [log] [blame]
margarethaa452c5e2018-04-25 22:48:09 +02001package de.ids_mannheim.korap.oauth2.entity;
2
margaretha064eb6f2018-07-10 18:33:01 +02003import java.io.Serializable;
margarethaa452c5e2018-04-25 22:48:09 +02004import java.time.ZonedDateTime;
margaretha1097acc2018-05-02 18:33:24 +02005import java.util.Set;
margarethaa452c5e2018-04-25 22:48:09 +02006
margaretha6e796842023-08-17 15:10:45 +02007import jakarta.persistence.Column;
8import jakarta.persistence.Entity;
9import jakarta.persistence.FetchType;
10import jakarta.persistence.GeneratedValue;
11import jakarta.persistence.GenerationType;
12import jakarta.persistence.Id;
13import jakarta.persistence.JoinColumn;
14import jakarta.persistence.JoinTable;
15import jakarta.persistence.ManyToMany;
16import jakarta.persistence.ManyToOne;
17import jakarta.persistence.Table;
18import jakarta.persistence.UniqueConstraint;
margarethaa452c5e2018-04-25 22:48:09 +020019
20import lombok.Getter;
21import lombok.Setter;
22
margaretha398f4722019-01-09 19:07:20 +010023/**
24 * Defines oauth2_access_token database table mapping and access token
25 * relations to AccessScope and RefreshToken.
26 *
27 * @author margaretha
28 *
29 */
margarethaa452c5e2018-04-25 22:48:09 +020030@Getter
31@Setter
32@Entity
33@Table(name = "oauth2_access_token")
margaretha03b82862018-07-12 20:09:26 +020034public class AccessToken implements Serializable {
margaretha064eb6f2018-07-10 18:33:01 +020035
36 private static final long serialVersionUID = 8452701765986475302L;
margarethaa452c5e2018-04-25 22:48:09 +020037
38 @Id
39 @GeneratedValue(strategy = GenerationType.IDENTITY)
40 private int id;
41 private String token;
margaretha6ad08b42018-08-22 18:33:54 +020042 @Column(name = "created_date", updatable = false)
margarethaa452c5e2018-04-25 22:48:09 +020043 private ZonedDateTime createdDate;
margaretha6ad08b42018-08-22 18:33:54 +020044 @Column(name = "expiry_date", updatable = false)
45 private ZonedDateTime expiryDate;
margaretha07402f42018-05-07 19:07:45 +020046 @Column(name = "user_id")
47 private String userId;
margaretha35e1ca22023-11-16 22:00:01 +010048 // @Column(name = "client_id")
49 // private String clientId;
margarethaa452c5e2018-04-25 22:48:09 +020050 @Column(name = "is_revoked")
51 private boolean isRevoked;
margarethaa2ce63d2018-06-28 10:11:43 +020052 @Column(name = "user_auth_time", updatable = false)
53 private ZonedDateTime userAuthenticationTime;
margaretha03b82862018-07-12 20:09:26 +020054
55 // @OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.REMOVE)
56 // @JoinColumn(name="authorization_id")
57 // private Authorization authorization;
58
margaretha1097acc2018-05-02 18:33:24 +020059 @ManyToMany(fetch = FetchType.EAGER)
margaretha35e1ca22023-11-16 22:00:01 +010060 @JoinTable(name = "oauth2_access_token_scope", joinColumns = @JoinColumn(name = "token_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "scope_id", referencedColumnName = "id"), uniqueConstraints = @UniqueConstraint(columnNames = {
61 "token_id", "scope_id" }))
margaretha1097acc2018-05-02 18:33:24 +020062 private Set<AccessScope> scopes;
margaretha03b82862018-07-12 20:09:26 +020063
margaretha398f4722019-01-09 19:07:20 +010064 @ManyToOne(fetch = FetchType.LAZY)
65 @JoinColumn(name = "refresh_token")
margarethaf370f542018-08-23 18:51:49 +020066 private RefreshToken refreshToken;
margaretha35e1ca22023-11-16 22:00:01 +010067
margaretha0afd44a2020-02-05 10:49:21 +010068 @ManyToOne(fetch = FetchType.LAZY)
69 @JoinColumn(name = "client")
70 private OAuth2Client client;
margarethaa452c5e2018-04-25 22:48:09 +020071}