All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jgcomptech.tools.authenication.UserRole Maven / Gradle / Ivy

package com.jgcomptech.tools.authenication;

import com.jgcomptech.tools.permissions.PermissionManager;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

import java.util.HashSet;

/**
 * An object representing a user account role.
 * @since 1.4.0
 */
public class UserRole {
    private final String name;
    private final HashSet permissions = new HashSet<>();
    private boolean enabled;
    private final PermissionManager permissionManager = PermissionManager.getInstance();

    public UserRole(final String name) {
        if(name == null || name.isEmpty()) {
            throw new IllegalArgumentException("Name cannot be null or empty!");
        } else this.name = name;
        enable();
    }

    public String getName() { return name; }

    @Override
    public String toString() { return getName(); }

    public HashSet getPermissions() { return permissions; }

    public boolean isEnabled() { return enabled; }

    public void enable() { enabled = true; }

    public void disable() {
        if(UserRoleManager.SystemUserRoles.getRoles().contains(name)) {
            throw new IllegalStateException("This role is a system role and cannot be disabled!");
        }
        enabled = false;
    }

    public boolean addPermission(final String name) {
        if(name == null || name.isEmpty()) {
            throw new IllegalArgumentException("Name cannot be null or empty!");
        }
        if(this.name.equals(UserRoleManager.SystemUserRoles.NONE.getName())) {
            throw new IllegalArgumentException("Permissions cannot be added to user role NONE!");
        }
        if(permissions.contains(name)) return false;
        if(permissionManager.getPermissionsNames().contains(name)) {
            permissions.add(name);
            return true;
        } else return false;
    }

    public boolean removePermission(final String name) {
        if(name == null || name.isEmpty()) {
            throw new IllegalArgumentException("Name cannot be null or empty!");
        }
        if(!permissions.contains(name)) return false;
        else {
            permissions.remove(name);
            return true;
        }
    }

    @Override
    public boolean equals(final Object o) {
        if (this == o) return true;

        if (!(o instanceof UserRole)) return false;

        UserRole userRole = (UserRole) o;

        return new EqualsBuilder()
                .append(isEnabled(), userRole.isEnabled())
                .append(getName(), userRole.getName())
                .append(getPermissions(), userRole.getPermissions())
                .isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder(17, 37)
                .append(getName())
                .append(getPermissions())
                .append(isEnabled())
                .toHashCode();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy