public Permission[] GetUserPermissions(Session userSession) { // Check if all roles in session are assigned to user List<Permission> permissions = new List<Permission>(); if (userSession == null) { return null; } List<Role> allUserRoles = null; try { allUserRoles = GetUserRolesHierarchy(userSession.User.Id); } catch (Exception) { } foreach (Role role in userSession.Roles) { if (allUserRoles.FirstOrDefault((r) => { return r.Id == role.Id;}) == null) { return null; } } // Check if roles in session have access to the permission foreach(Role role in userSession.Roles) { foreach (Role childRole in GetAllChildRoles(role)) { // Checking if we have the pair Role <-> Permission foreach (PermissionAssigment pa in permissionAssigmentRepository.LoadByRoleId(role.Id)) { permissions.Add(pa.Permission); } } } return permissions.Distinct(new Permission()).ToArray(); }
public Boolean UserIsAllowed(Session userSession, Permission permission) { // Check if all roles in session are assigned to user List<Role> allUserRoles = null; try { allUserRoles = GetUserRolesHierarchy(userSession.User.Id); } catch (Exception ex) { } foreach (Role role in userSession.Roles) { if (allUserRoles.FirstOrDefault((r) => { return r.Id == role.Id;}) == null) { return false; } } // Check if roles in session have access to the permission foreach(Role role in userSession.Roles) { foreach (Role childRole in GetAllChildRoles(role)) { // Checking if we have the pair Role <-> Permission foreach (PermissionAssigment pa in permissionAssigmentRepository.LoadByRoleId(role.Id)) { if (pa.Permission.Id == permission.Id) { return true; } } } } return false; }
public Boolean UserIsAllowed(Session userSession, Permission permission) { Permission[] permissions = GetUserPermissions(userSession); Permission perm = permissions.FirstOrDefault((p)=> { return p.Description == permission.Description; }); return perm != null; }