Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@
package org.breedinginsight.api.auth;

public enum ProgramSecuredRole {
MEMBER("member"),
BREEDER("breeder"),
SYSTEM_ADMIN("admin"),

READ_ONLY("Read Only"),
PROGRAM_ADMIN("Program Administrator"),
SYSTEM_ADMIN("System Administrator"),
EXPERIMENTAL_COLLABORATOR("Experimental Collaborator");

private String domain;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import java.util.List;

public enum ProgramSecuredRoleGroup {
ALL_PROGRAM_ROLES(List.of(ProgramSecuredRole.MEMBER, ProgramSecuredRole.BREEDER)),
ALL_PROGRAM_ROLES(List.of(ProgramSecuredRole.READ_ONLY, ProgramSecuredRole.PROGRAM_ADMIN)),
ALL(ListUtils.union(ALL_PROGRAM_ROLES.getProgramRoles(), List.of(ProgramSecuredRole.SYSTEM_ADMIN)));

private List<ProgramSecuredRole> programRoles;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public HttpResponse<Response<DataResponse<ProgramBreedingMethodEntity>>> getSyst

@Post("programs/{programId}/breeding-methods")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<?> createProgramBreedingMethod(@PathVariable UUID programId, @Body ProgramBreedingMethodEntity breedingMethod) throws ApiException{
log.debug("Saving new program breeding method");

Expand Down Expand Up @@ -106,7 +106,7 @@ public HttpResponse<Response<DataResponse<ProgramBreedingMethodEntity>>> getProg

@Put("programs/{programId}/breeding-methods/{breedingMethodId}")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<?> updateProgramBreedingMethod(@PathVariable UUID programId, @PathVariable UUID breedingMethodId, @Body ProgramBreedingMethodEntity breedingMethod) throws ApiException {
log.debug("Saving new program breeding method");

Expand Down Expand Up @@ -152,7 +152,7 @@ public HttpResponse enableSystemBreedingMethods(@PathVariable UUID programId, @B
}

@Delete("programs/{programId}/breeding-methods/{breedingMethodId}")
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse deleteProgramBreedingMethod(@PathVariable UUID programId, @PathVariable UUID breedingMethodId) throws BadRequestException, ApiException {
try {
AuthenticatedUser user = securityService.getUser();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public OntologyController(SecurityService securityService, OntologyService ontol
@Get("/programs/{programId}/ontology/shared/programs{?shared}")
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<DataResponse<SharedOntology>>> getAvailablePrograms(
@PathVariable UUID programId, @QueryValue(defaultValue = "false") Boolean shared) {
try {
Expand Down Expand Up @@ -97,7 +97,7 @@ public HttpResponse<Response<DataResponse<SharedOntology>>> getAvailablePrograms
*/
@Post("/programs/{programId}/ontology/shared/programs")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<DataResponse<SharedOntology>>> shareOntology(
@PathVariable UUID programId, @Body List<SharedOntologyProgramRequest> request) {
try {
Expand Down Expand Up @@ -131,7 +131,7 @@ public HttpResponse<Response<DataResponse<SharedOntology>>> shareOntology(
*/
@Delete("/programs/{programId}/ontology/shared/programs/{sharedProgramId}")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse revokeOntology(
@PathVariable UUID programId, @PathVariable UUID sharedProgramId) {
try {
Expand All @@ -156,7 +156,7 @@ public HttpResponse revokeOntology(
@Put("/programs/{programId}/ontology/subscribe/{sharingProgramId}")
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<SubscribedOntology>> subscribeOntology(
@PathVariable UUID programId, @PathVariable UUID sharingProgramId) {
try {
Expand All @@ -181,7 +181,7 @@ public HttpResponse<Response<SubscribedOntology>> subscribeOntology(
*/
@Delete("/programs/{programId}/ontology/subscribe/{sharingProgramId}")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse unsubscribeOntology(
@PathVariable UUID programId, @PathVariable UUID sharingProgramId) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ public HttpResponse<Response<Program>> getProgram(@PathVariable UUID programId)

@Post("/programs")
@Produces(MediaType.APPLICATION_JSON)
@Secured({"ADMIN"})
@Secured("SYSTEM ADMINISTRATOR")
@AddMetadata
public HttpResponse<Response<Program>> createProgram(@Valid @Body ProgramRequest programRequest) {

Expand All @@ -142,7 +142,7 @@ public HttpResponse<Response<Program>> createProgram(@Valid @Body ProgramRequest

@Put("/programs/{programId}")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER, ProgramSecuredRole.SYSTEM_ADMIN})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN, ProgramSecuredRole.SYSTEM_ADMIN})
@AddMetadata
public HttpResponse<Response<Program>> updateProgram(@PathVariable UUID programId, @Valid @Body ProgramRequest programRequest) {

Expand All @@ -162,7 +162,7 @@ public HttpResponse<Response<Program>> updateProgram(@PathVariable UUID programI

@Delete("/programs/archive/{programId}")
@Produces(MediaType.APPLICATION_JSON)
@Secured({"ADMIN"})
@Secured("SYSTEM ADMINISTRATOR")
@AddMetadata
public HttpResponse archiveProgram(@PathVariable UUID programId) {
/* Archive a program */
Expand Down Expand Up @@ -229,7 +229,7 @@ public HttpResponse<Response<ProgramUser>> getProgramUser(@PathVariable UUID pro
@Post("/programs/{programId}/users")
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER, ProgramSecuredRole.SYSTEM_ADMIN})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN, ProgramSecuredRole.SYSTEM_ADMIN})
public HttpResponse<Response<ProgramUser>> addProgramUser(@PathVariable UUID programId, @Valid @Body ProgramUserRequest programUserRequest) {
/* Add a user to a program. Create the user if they don't exist. */

Expand All @@ -253,7 +253,7 @@ public HttpResponse<Response<ProgramUser>> addProgramUser(@PathVariable UUID pro
@Put("/programs/{programId}/users/{userId}")
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@ProgramSecured(roles = {ProgramSecuredRole.SYSTEM_ADMIN, ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.SYSTEM_ADMIN, ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<ProgramUser>> updateProgramUser(@PathVariable UUID programId, @PathVariable UUID userId,
@Valid @Body ProgramUserRequest programUserRequest) {
try {
Expand All @@ -278,7 +278,7 @@ public HttpResponse<Response<ProgramUser>> updateProgramUser(@PathVariable UUID

@Delete("/programs/{programId}/users/{userId}")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER, ProgramSecuredRole.SYSTEM_ADMIN})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN, ProgramSecuredRole.SYSTEM_ADMIN})
public HttpResponse archiveProgramUser(@PathVariable UUID programId, @PathVariable UUID userId) {

try {
Expand Down Expand Up @@ -359,7 +359,7 @@ public HttpResponse<Response<ProgramLocation>> getProgramLocations(@PathVariable
@Post("/programs/{programId}/locations")
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<ProgramLocation>> addProgramLocation(@PathVariable UUID programId,
@Valid @Body ProgramLocationRequest locationRequest) {

Expand All @@ -383,7 +383,7 @@ public HttpResponse<Response<ProgramLocation>> addProgramLocation(@PathVariable
@Put("/programs/{programId}/locations/{locationId}")
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<Program>> updateProgramLocation(@PathVariable UUID programId,
@PathVariable UUID locationId,
@Valid @Body ProgramLocationRequest locationRequest) {
Expand All @@ -407,7 +407,7 @@ public HttpResponse<Response<Program>> updateProgramLocation(@PathVariable UUID

@Delete("/programs/{programId}/locations/{locationId}")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse archiveProgramLocation(@PathVariable UUID programId,
@PathVariable UUID locationId) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ public HttpResponse<Response<Editable>> getTraitEditable(@PathVariable UUID prog

@Post("/programs/{programId}/traits")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse createTraits(@PathVariable UUID programId, @Body @Valid List<Trait> traits) {
AuthenticatedUser actingUser = securityService.getUser();
try {
Expand Down Expand Up @@ -190,7 +190,7 @@ public HttpResponse createTraits(@PathVariable UUID programId, @Body @Valid List

@Put("/programs/{programId}/traits")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse updateTraits(@PathVariable UUID programId, @Body @Valid List<Trait> traits) {
AuthenticatedUser actingUser = securityService.getUser();
try {
Expand Down Expand Up @@ -219,7 +219,7 @@ public HttpResponse updateTraits(@PathVariable UUID programId, @Body @Valid List
@Put("/programs/{programId}/traits/{traitId}/archive{?active}")
@AddMetadata
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<Trait>> archiveTrait(@PathVariable UUID programId, @PathVariable UUID traitId, @QueryValue(defaultValue = "false") Boolean active) {

AuthenticatedUser actingUser = securityService.getUser();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public TraitUploadController(TraitUploadService traitUploadService, SecurityServ
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<ProgramUpload>> putTraitUpload(@PathVariable UUID programId, @Part CompletedFileUpload file) {

try {
Expand Down Expand Up @@ -94,7 +94,7 @@ public HttpResponse<Response<ProgramUpload>> putTraitUpload(@PathVariable UUID p

@Get("/programs/{programId}/trait-upload{?queryParams*}")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<ProgramUpload>> getTraitUpload(
@PathVariable UUID programId,
@QueryValue @QueryValid(using = TraitQueryMapper.class) @Valid QueryParams queryParams) {
Expand All @@ -112,7 +112,7 @@ public HttpResponse<Response<ProgramUpload>> getTraitUpload(

@Post("/programs/{programId}/trait-upload/search{?queryParams*}")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<ProgramUpload>> searchTraitUpload(
@PathVariable UUID programId,
@QueryValue @QueryValid(using = TraitQueryMapper.class) @Valid QueryParams queryParams,
Expand All @@ -131,7 +131,7 @@ public HttpResponse<Response<ProgramUpload>> searchTraitUpload(

@Delete("/programs/{programId}/trait-upload")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse deleteTraitUpload(@PathVariable UUID programId) {

try {
Expand All @@ -147,7 +147,7 @@ public HttpResponse deleteTraitUpload(@PathVariable UUID programId) {

@Post("/programs/{programId}/trait-upload/{traitUploadId}")
@Produces(MediaType.APPLICATION_JSON)
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse confirmTraitUpload(@PathVariable UUID programId,
@PathVariable UUID traitUploadId) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ public HttpResponse<Response<DataResponse<Program>>> postUsersSearch(
@Post("/users")
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@Secured({"ADMIN"})
@Secured("SYSTEM ADMINISTRATOR")
public HttpResponse<Response<User>> createUser(@Body @Valid UserRequest requestUser){

try {
Expand Down Expand Up @@ -165,7 +165,7 @@ public HttpResponse<Response<User>> updateUser(@PathVariable UUID userId, @Body

@Delete("/users/{userId}")
@Produces(MediaType.APPLICATION_JSON)
@Secured({"ADMIN"})
@Secured("SYSTEM ADMINISTRATOR")
public HttpResponse archiveUser(@PathVariable UUID userId){

try {
Expand All @@ -184,7 +184,7 @@ public HttpResponse archiveUser(@PathVariable UUID userId){
@Put("users/{userId}/roles")
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@Secured({"ADMIN"})
@Secured("SYSTEM ADMINISTRATOR")
public HttpResponse<Response<User>> updateUserSystemRoles(@PathVariable UUID userId, @Body @Valid SystemRolesRequest requestUser) {

try {
Expand All @@ -206,7 +206,7 @@ public HttpResponse<Response<User>> updateUserSystemRoles(@PathVariable UUID use

@Put("users/{userId}/resend-email")
@Produces(MediaType.APPLICATION_JSON)
@Secured({"ADMIN"})
@Secured("SYSTEM ADMINISTRATOR")
public HttpResponse resendWelcomeEmail(@PathVariable UUID userId) {
try {
userService.createAndSendAccountToken(userId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public GenotypeDataUploadController(GenotypeService genoService, SecurityService
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN})
public HttpResponse<Response<ImportResponse>> uploadData(@PathVariable UUID programId, @PathVariable UUID experimentId, @Part("file") CompletedFileUpload upload) {
AuthenticatedUser actingUser = securityService.getUser();
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public HttpResponse<Response<DataResponse<ImportConfigResponse>>> getImportTypes
@Get("/programs/{programId}/import/mappings{?draft}")
@Produces(MediaType.APPLICATION_JSON)
@AddMetadata
@ProgramSecured(roles = {ProgramSecuredRole.BREEDER, ProgramSecuredRole.SYSTEM_ADMIN})
@ProgramSecured(roles = {ProgramSecuredRole.PROGRAM_ADMIN, ProgramSecuredRole.SYSTEM_ADMIN})
public HttpResponse<Response<DataResponse<ImportMapping>>> getMappings(@PathVariable UUID programId,
@QueryValue(defaultValue = "false") Boolean draft) {

Expand Down
Loading