io.scalecube.services.auth.ServicePrincipal Maven / Gradle / Ivy
The newest version!
package io.scalecube.services.auth;
import java.util.Collection;
import java.util.Objects;
import java.util.Set;
import java.util.StringJoiner;
/**
* Service principal implementation of {@link Principal}. Provides role-based access control by
* allowing checks against assigned roles and permissions.
*/
public class ServicePrincipal implements Principal {
private final String role;
private final Set permissions;
/**
* Constructor.
*
* @param role service role
* @param permissions service permissions
*/
public ServicePrincipal(String role, Collection permissions) {
this.role = role;
this.permissions = permissions != null ? Set.copyOf(permissions) : null;
}
@Override
public String role() {
return role;
}
@Override
public boolean hasRole(String role) {
return Objects.equals(this.role, role);
}
@Override
public Collection permissions() {
return permissions;
}
@Override
public boolean hasPermission(String permission) {
return permissions != null && permissions.contains(permission);
}
@Override
public String toString() {
return new StringJoiner(", ", ServicePrincipal.class.getSimpleName() + "[", "]")
.add("role='" + role + "'")
.add("permissions=" + permissions)
.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy