package gov.nysenate.openleg.service.auth; import org.apache.shiro.authz.Permission; import org.apache.shiro.authz.permission.WildcardPermission; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; /** * Defines roles and the permissions implied by them. */ public enum OpenLegRole { MASTER_ADMIN(Collections.singletonList("*")), READONLY_ADMIN(Arrays.asList("admin:view", "ui:view")), INTERNAL_USER(Arrays.asList("ui:view")), API_USER(Arrays.asList("ui:view")), SEN_SITE_API_USER(Collections.singletonList("senatesite:*:*")) ; private List<String> permissions; private List<Permission> wildcardPermissions; OpenLegRole(List<String> permissions) { this.permissions = permissions; this.wildcardPermissions = this.permissions.stream() .map(WildcardPermission::new) .collect(Collectors.toList()); } public List<String> getPermissionStrings() { return permissions; } public List<Permission> getWildcardPermissions() { return wildcardPermissions; } }