mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 16:35:45 +01:00
Add role attribute to repository permission
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import javax.validation.Constraint;
|
||||
import javax.validation.Payload;
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import static java.lang.annotation.ElementType.TYPE;
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
@Target({TYPE})
|
||||
@Retention(RUNTIME)
|
||||
@Constraint(validatedBy = EitherRoleOrVerbsValidator.class)
|
||||
@Documented
|
||||
public @interface EitherRoleOrVerbs {
|
||||
|
||||
String message() default "permission must either have a role or a not empty set of verbs";
|
||||
|
||||
Class<?>[] groups() default {};
|
||||
|
||||
Class<? extends Payload>[] payload() default {};
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.validation.ConstraintValidator;
|
||||
import javax.validation.ConstraintValidatorContext;
|
||||
|
||||
public class EitherRoleOrVerbsValidator implements ConstraintValidator<EitherRoleOrVerbs, RepositoryPermissionDto> {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(EitherRoleOrVerbsValidator.class);
|
||||
|
||||
@Override
|
||||
public void initialize(EitherRoleOrVerbs constraintAnnotation) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid(RepositoryPermissionDto object, ConstraintValidatorContext constraintContext) {
|
||||
if (Strings.isNullOrEmpty(object.getRole())) {
|
||||
boolean result = object.getVerbs() != null && !object.getVerbs().isEmpty();
|
||||
LOG.trace("Validation result for permission with empty or no role: {}", result);
|
||||
return result;
|
||||
} else {
|
||||
boolean result = object.getVerbs() == null || object.getVerbs().isEmpty();
|
||||
LOG.trace("Validation result for permission with non empty role: {}", result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import javax.validation.constraints.Pattern;
|
||||
import java.util.Collection;
|
||||
|
||||
@Getter @Setter @ToString @NoArgsConstructor
|
||||
@EitherRoleOrVerbs
|
||||
public class RepositoryPermissionDto extends HalRepresentation {
|
||||
|
||||
public static final String GROUP_PREFIX = "@";
|
||||
@@ -21,9 +22,11 @@ public class RepositoryPermissionDto extends HalRepresentation {
|
||||
@Pattern(regexp = ValidationUtil.REGEX_NAME)
|
||||
private String name;
|
||||
|
||||
@NotEmpty
|
||||
@NoBlankStrings
|
||||
private Collection<String> verbs;
|
||||
|
||||
private String role;
|
||||
|
||||
private boolean groupPermission = false;
|
||||
|
||||
public RepositoryPermissionDto(String permissionName, boolean groupPermission) {
|
||||
|
||||
Reference in New Issue
Block a user