1 package de.dlr.shepard.auth.apikey.entities;
2
3 import de.dlr.shepard.auth.users.entities.User;
4 import de.dlr.shepard.common.neo4j.entities.HasCreationDate;
5 import de.dlr.shepard.common.neo4j.entities.Named;
6 import de.dlr.shepard.common.util.Constants;
7 import de.dlr.shepard.common.util.HasId;
8 import java.util.Date;
9 import java.util.Objects;
10 import java.util.UUID;
11 import lombok.Data;
12 import lombok.NoArgsConstructor;
13 import lombok.ToString;
14 import org.neo4j.ogm.annotation.GeneratedValue;
15 import org.neo4j.ogm.annotation.Id;
16 import org.neo4j.ogm.annotation.NodeEntity;
17 import org.neo4j.ogm.annotation.Relationship;
18 import org.neo4j.ogm.annotation.typeconversion.Convert;
19 import org.neo4j.ogm.annotation.typeconversion.DateLong;
20 import org.neo4j.ogm.id.UuidStrategy;
21 import org.neo4j.ogm.typeconversion.UuidStringConverter;
22
23 @NodeEntity
24 @Data
25 @NoArgsConstructor
26 public class ApiKey implements HasId, Named, HasCreationDate {
27
28 @Id
29 @GeneratedValue(strategy = UuidStrategy.class)
30 @Convert(UuidStringConverter.class)
31 private UUID uid;
32
33 private String name;
34
35 @DateLong
36 private Date createdAt;
37
38 private String jws;
39
40 @ToString.Exclude
41 @Relationship(type = Constants.BELONGS_TO)
42 private User belongsTo;
43
44 public ApiKey(String name, Date createdAt, User belongsTo) {
45 this.name = name;
46 this.createdAt = createdAt;
47 this.belongsTo = belongsTo;
48 }
49
50
51
52
53
54
55 public ApiKey(UUID uid) {
56 this.uid = uid;
57 }
58
59 @Override
60 public String getUniqueId() {
61 return uid.toString();
62 }
63
64 @Override
65 public int hashCode() {
66 final int prime = 31;
67 int result = 1;
68 result = prime * result + Objects.hash(createdAt, jws, name, uid);
69 result = prime * result + HasId.hashcodeHelper(belongsTo);
70 return result;
71 }
72
73 @Override
74 public boolean equals(Object obj) {
75 if (this == obj) return true;
76 if (!(obj instanceof ApiKey)) return false;
77 ApiKey other = (ApiKey) obj;
78 return (
79 HasId.equalsHelper(belongsTo, other.belongsTo) &&
80 Objects.equals(createdAt, other.createdAt) &&
81 Objects.equals(jws, other.jws) &&
82 Objects.equals(name, other.name) &&
83 Objects.equals(uid, other.uid)
84 );
85 }
86 }