Search in sources :

Example 41 with Role

use of com.yahoo.athenz.zms.Role in project athenz by yahoo.

the class FileConnection method updateRole.

@Override
public boolean updateRole(String domainName, Role role) {
    DomainStruct domainStruct = getDomainStruct(domainName);
    if (domainStruct == null) {
        throw ZMSUtils.error(ResourceException.NOT_FOUND, "domain not found", "updateRole");
    }
    if (domainStruct.getRoles() == null) {
        domainStruct.setRoles(new HashMap<String, Role>());
    }
    HashMap<String, Role> roles = domainStruct.getRoles();
    String roleName = extractRoleName(domainName, role.getName());
    if (roleName == null) {
        throw ZMSUtils.error(ResourceException.BAD_REQUEST, "invalid role name", "updateRole");
    }
    // here we only need to update the main attrs and not
    // the members
    Role originalRole = getRoleObject(domainStruct, roleName);
    List<RoleMember> members = role.getRoleMembers();
    if (originalRole != null) {
        role.setRoleMembers(originalRole.getRoleMembers());
    } else {
        role.setRoleMembers(null);
    }
    role.setModified(Timestamp.fromCurrentTime());
    roles.put(roleName, role);
    putDomainStruct(domainName, domainStruct);
    role.setRoleMembers(members);
    return true;
}
Also used : Role(com.yahoo.athenz.zms.Role) PrincipalRole(com.yahoo.athenz.zms.PrincipalRole) RoleMember(com.yahoo.athenz.zms.RoleMember)

Example 42 with Role

use of com.yahoo.athenz.zms.Role in project athenz by yahoo.

the class FileConnection method deleteRoleMember.

@Override
public boolean deleteRoleMember(String domainName, String roleName, String principal, String admin, String auditRef) {
    DomainStruct domainStruct = getDomainStruct(domainName);
    if (domainStruct == null) {
        throw ZMSUtils.error(ResourceException.NOT_FOUND, "domain not found", "deleteRoleMember");
    }
    Role role = getRoleObject(domainStruct, roleName);
    if (role == null) {
        throw ZMSUtils.error(ResourceException.NOT_FOUND, "role not found", "deleteRoleMember");
    }
    List<RoleMember> roleMembers = role.getRoleMembers();
    if (roleMembers != null) {
        for (int idx = 0; idx < roleMembers.size(); idx++) {
            if (roleMembers.get(idx).getMemberName().equalsIgnoreCase(principal)) {
                roleMembers.remove(idx);
                break;
            }
        }
    }
    putDomainStruct(domainName, domainStruct);
    return true;
}
Also used : Role(com.yahoo.athenz.zms.Role) PrincipalRole(com.yahoo.athenz.zms.PrincipalRole) RoleMember(com.yahoo.athenz.zms.RoleMember)

Example 43 with Role

use of com.yahoo.athenz.zms.Role in project athenz by yahoo.

the class FileConnection method updateRoleModTimestamp.

@Override
public boolean updateRoleModTimestamp(String domainName, String roleName) {
    DomainStruct domainStruct = getDomainStruct(domainName);
    if (domainStruct == null) {
        throw ZMSUtils.error(ResourceException.NOT_FOUND, "domain not found", "updateRoleModTimestamp");
    }
    Role role = getRoleObject(domainStruct, roleName);
    role.setModified(Timestamp.fromCurrentTime());
    putDomainStruct(domainName, domainStruct);
    return true;
}
Also used : Role(com.yahoo.athenz.zms.Role) PrincipalRole(com.yahoo.athenz.zms.PrincipalRole)

Example 44 with Role

use of com.yahoo.athenz.zms.Role in project athenz by yahoo.

the class FileConnection method getRoleMember.

@Override
public Membership getRoleMember(String domainName, String roleName, String principal) {
    DomainStruct domainStruct = getDomainStruct(domainName);
    if (domainStruct == null) {
        throw ZMSUtils.error(ResourceException.NOT_FOUND, "domain not found", "getRoleMember");
    }
    Role role = getRoleObject(domainStruct, roleName);
    if (role == null) {
        throw ZMSUtils.error(ResourceException.NOT_FOUND, "role not found", "getRoleMember");
    }
    Membership membership = new Membership().setMemberName(principal).setRoleName(ZMSUtils.roleResourceName(domainName, roleName)).setIsMember(false);
    if (role.getRoleMembers() != null) {
        Set<RoleMember> members = new HashSet<>(role.getRoleMembers());
        for (RoleMember member : members) {
            if (member.getMemberName().equalsIgnoreCase(principal)) {
                membership.setIsMember(true);
                membership.setExpiration(member.getExpiration());
                break;
            }
        }
    }
    return membership;
}
Also used : Role(com.yahoo.athenz.zms.Role) PrincipalRole(com.yahoo.athenz.zms.PrincipalRole) Membership(com.yahoo.athenz.zms.Membership) RoleMember(com.yahoo.athenz.zms.RoleMember) HashSet(java.util.HashSet)

Example 45 with Role

use of com.yahoo.athenz.zms.Role in project athenz by yahoo.

the class FileConnection method insertRoleMember.

@Override
public boolean insertRoleMember(String domainName, String roleName, RoleMember member, String admin, String auditRef) {
    DomainStruct domainStruct = getDomainStruct(domainName);
    if (domainStruct == null) {
        throw ZMSUtils.error(ResourceException.NOT_FOUND, "domain not found", "insertRoleMember");
    }
    Role role = getRoleObject(domainStruct, roleName);
    if (role == null) {
        throw ZMSUtils.error(ResourceException.NOT_FOUND, "role not found", "insertRoleMember");
    }
    if (!validatePrincipalDomain(member.getMemberName())) {
        throw ZMSUtils.error(ResourceException.NOT_FOUND, "principal domain not found", "insertRoleMember");
    }
    // and if it doesn't exist then create one
    if (role.getRoleMembers() == null) {
        role.setRoleMembers(new ArrayList<RoleMember>());
    }
    // need to check if the member already exists
    boolean entryUpdated = false;
    for (RoleMember roleMember : role.getRoleMembers()) {
        if (roleMember.getMemberName().equals(member.getMemberName())) {
            roleMember.setExpiration(member.getExpiration());
            entryUpdated = true;
        }
    }
    if (!entryUpdated) {
        role.getRoleMembers().add(member);
    }
    putDomainStruct(domainName, domainStruct);
    return true;
}
Also used : Role(com.yahoo.athenz.zms.Role) PrincipalRole(com.yahoo.athenz.zms.PrincipalRole) RoleMember(com.yahoo.athenz.zms.RoleMember)

Aggregations

Role (com.yahoo.athenz.zms.Role)94 Test (org.testng.annotations.Test)57 RoleMember (com.yahoo.athenz.zms.RoleMember)47 ArrayList (java.util.ArrayList)47 DomainData (com.yahoo.athenz.zms.DomainData)32 DataCache (com.yahoo.athenz.zts.cache.DataCache)31 PrincipalRole (com.yahoo.athenz.zms.PrincipalRole)27 Policy (com.yahoo.athenz.zms.Policy)22 SignedDomain (com.yahoo.athenz.zms.SignedDomain)22 Assertion (com.yahoo.athenz.zms.Assertion)20 MemberRole (com.yahoo.athenz.zts.cache.MemberRole)19 JDBCConnection (com.yahoo.athenz.zms.store.jdbc.JDBCConnection)14 MockZMSFileChangeLogStore (com.yahoo.athenz.zts.store.impl.MockZMSFileChangeLogStore)13 ZMSFileChangeLogStore (com.yahoo.athenz.zts.store.impl.ZMSFileChangeLogStore)12 ServiceIdentity (com.yahoo.athenz.zms.ServiceIdentity)11 SQLException (java.sql.SQLException)9 HashMap (java.util.HashMap)8 ResourceException (com.yahoo.athenz.zms.ResourceException)7 Domain (com.yahoo.athenz.zms.Domain)6 File (java.io.File)6