protected virtual TRole GetRole(int tenantId, RoleTemplateMarkup role, bool addIfMissing) { var retVal = db.SecurityRoles.FirstOrDefault(n => n.TenantId == tenantId && n.RoleName == role.Name); if (retVal == null && addIfMissing) { retVal = new TRole { TenantId = tenantId, RoleName = role.Name, IsSystemRole = role.IsSystemRole }; db.SecurityRoles.Add(retVal); } return(retVal); }
protected virtual void ApplyPermissions(TRole role, RoleTemplateMarkup template) { foreach (var perm in template.Permissions) { var tmp = GetPermission(role.TenantId, perm, true); if (role.RoleId == 0 || tmp.PermissionId == 0 || !db.RolePermissions.Any(n => n.TenantId == role.TenantId && n.PermissionId == tmp.PermissionId && n.RoleId == role.RoleId)) { TRolePermission lnk = new TRolePermission { Permission = tmp, TenantId = role.TenantId, Role = role }; db.RolePermissions.Add(lnk); } } }
protected virtual void RevokePermissions(TRole role, RoleTemplateMarkup template, IList <int> permissionsToCheck) { foreach (var perm in template.Permissions) { var tmp = GetPermission(role.TenantId, perm, false); if (tmp != null) { if (!perm.Global && !permissionsToCheck.Contains(tmp.PermissionId)) { permissionsToCheck.Add(tmp.PermissionId); } var lnk = db.RolePermissions.FirstOrDefault(n => n.TenantId == role.TenantId && n.PermissionId == tmp.PermissionId && n.RoleId == role.RoleId); if (lnk != null) { db.RolePermissions.Remove(lnk); } } } }