Skip to content

Commit 140c081

Browse files
authored
Merge pull request #688 from overture-stack/feature/visaPermissions
committing changes related to Visa permissions schema
2 parents e10d449 + c02cb4d commit 140c081

File tree

9 files changed

+115
-5
lines changed

9 files changed

+115
-5
lines changed

src/main/java/bio/overture/ego/controller/VisaController.java

+5
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ public VisaController(
4444
this.applicationPermissionService = applicationPermissionService;
4545
}
4646

47+
/*
48+
* This method is used to fetch visa using id
49+
* @param id UUID
50+
* @return visa Visa
51+
*/
4752
@AdminScoped
4853
@RequestMapping(method = GET, value = "/{id}")
4954
@ApiResponses(

src/main/java/bio/overture/ego/model/entity/Visa.java

+9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package bio.overture.ego.model.entity;
22

3+
import static com.google.common.collect.Sets.newHashSet;
4+
35
import bio.overture.ego.model.enums.JavaFields;
46
import bio.overture.ego.model.enums.SqlFields;
57
import bio.overture.ego.model.enums.Tables;
68
import bio.overture.ego.view.Views;
9+
import com.fasterxml.jackson.annotation.JsonIgnore;
710
import com.fasterxml.jackson.annotation.JsonInclude;
811
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
912
import com.fasterxml.jackson.annotation.JsonView;
13+
import java.util.Set;
1014
import java.util.UUID;
1115
import javax.persistence.*;
1216
import javax.validation.constraints.NotNull;
@@ -58,4 +62,9 @@ public class Visa implements Identifiable<UUID> {
5862
@JsonView({Views.JWTAccessToken.class, Views.REST.class})
5963
@Column(name = SqlFields.BY)
6064
private String by;
65+
66+
@JsonIgnore
67+
@ManyToMany(mappedBy = "visaId", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
68+
@Builder.Default
69+
private Set<VisaPermission> visaPermissions = newHashSet();
6170
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package bio.overture.ego.model.entity;
2+
3+
import static bio.overture.ego.model.enums.AccessLevel.EGO_ACCESS_LEVEL_ENUM;
4+
5+
import bio.overture.ego.model.enums.AccessLevel;
6+
import bio.overture.ego.model.enums.SqlFields;
7+
import bio.overture.ego.model.enums.Tables;
8+
import bio.overture.ego.view.Views;
9+
import com.fasterxml.jackson.annotation.JsonView;
10+
import java.util.Collection;
11+
import java.util.UUID;
12+
import javax.persistence.*;
13+
import javax.validation.constraints.NotNull;
14+
import lombok.*;
15+
import lombok.experimental.FieldNameConstants;
16+
import org.hibernate.annotations.GenericGenerator;
17+
import org.hibernate.annotations.Type;
18+
19+
@Entity
20+
@Table(name = Tables.ACLVISAPERMISSION)
21+
@Data
22+
@Builder
23+
@NoArgsConstructor
24+
@AllArgsConstructor
25+
@JsonView(Views.REST.class)
26+
@ToString(callSuper = true)
27+
@FieldNameConstants
28+
public class VisaPermission extends AbstractPermission<Visa> {
29+
30+
@Id
31+
@Column(name = SqlFields.ID, updatable = false, nullable = false)
32+
@GenericGenerator(name = "aclp_uuid", strategy = "org.hibernate.id.UUIDGenerator")
33+
@GeneratedValue(generator = "aclp_uuid")
34+
private UUID id;
35+
36+
@JoinColumn(name = SqlFields.ID, nullable = false)
37+
private UUID entity;
38+
39+
@JoinColumn(name = SqlFields.ID, nullable = false)
40+
private UUID visaId;
41+
42+
@NotNull
43+
@Column(name = SqlFields.MASK, nullable = false)
44+
@Enumerated(EnumType.STRING)
45+
@Type(type = EGO_ACCESS_LEVEL_ENUM)
46+
private AccessLevel mask;
47+
48+
@ManyToMany
49+
@JoinTable(
50+
name = "ga4ghvisa",
51+
joinColumns = @JoinColumn(name = "aclp_id", referencedColumnName = "visaId"),
52+
inverseJoinColumns = @JoinColumn(name = "visa_id", referencedColumnName = "id"))
53+
private Collection<Visa> visas;
54+
55+
@Override
56+
public Visa getOwner() {
57+
return null;
58+
}
59+
60+
@Override
61+
public void setOwner(Visa owner) {}
62+
}

src/main/java/bio/overture/ego/model/enums/JavaFields.java

+2
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,6 @@ public class JavaFields {
7171
public static final String VALUE = "value";
7272

7373
public static final String BY = "by";
74+
75+
public static final String VISAPERMISSION = "ACLVISAPERMISSION";
7476
}

src/main/java/bio/overture/ego/model/enums/SqlFields.java

+6
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,10 @@ public class SqlFields {
4242
public static final String VALUE = "value";
4343

4444
public static final String BY = "by";
45+
46+
public static final String ENTITY = "entity";
47+
48+
public static final String VISAID = "visaId";
49+
50+
public static final String MASK = "mask";
4551
}

src/main/java/bio/overture/ego/model/enums/Tables.java

+2
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ public class Tables {
2424
public static final String INITTRIPWIRE = "inittripwire";
2525

2626
public static final String GA4GHVISA = "ga4ghvisa";
27+
28+
public static final String ACLVISAPERMISSION = "ACLVISAPERMISSION";
2729
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package bio.overture.ego.service;
2+
3+
import bio.overture.ego.model.entity.*;
4+
import lombok.extern.slf4j.Slf4j;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.stereotype.Service;
7+
import org.springframework.transaction.annotation.Transactional;
8+
9+
@Slf4j
10+
@Service
11+
@Transactional
12+
public class VisaPermissionService {
13+
14+
/** Dependencies */
15+
@Autowired private VisaService visaService;
16+
}

src/main/java/bio/overture/ego/service/VisaService.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,6 @@ public void delete(@NonNull UUID id) {
6565
super.delete(id);
6666
}
6767

68-
@Override
69-
public Visa getWithRelationships(UUID uuid) {
70-
return null;
71-
}
72-
7368
public Page<Visa> listVisa(@NonNull Pageable pageable) {
7469
return visaRepository.findAll(pageable);
7570
}
@@ -88,4 +83,9 @@ public abstract static class VisaConverter {
8883

8984
public abstract void updateVisa(VisaRequest request, @MappingTarget Visa visaToUpdate);
9085
}
86+
87+
@Override
88+
public Visa getWithRelationships(UUID uuid) {
89+
return null;
90+
}
9191
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CREATE TABLE ACLVISAPERMISSION (
2+
id UUID PRIMARY KEY,
3+
entity UUID,
4+
visaId UUID,
5+
mask ACLMASK NOT NULL,
6+
FOREIGN KEY (entity) REFERENCES POLICY(id),
7+
FOREIGN KEY (visaId) REFERENCES GA4GHVISA(id)
8+
);

0 commit comments

Comments
 (0)