/// <summary> /// /// </summary> /// <param name="roleIds"></param> /// <returns></returns> public static List <Targets> GetPermittedTargetsByRoleIds(List <int> roleIds) { using (var context = AuthorizationContext.CreateContext()) { var items = (from t in context.Targets join p in context.Permissions on t.TargetID equals p.TargetID where t.ContentType == (int)ContentTypes.Url && roleIds.Contains(p.RoleID) && p.PermitFlag == 1 && t.DeleteFlag == "0" && p.DeleteFlag == "0" select new PermittedTargets { Target = t, Permission = p }).ToList(); foreach (var item in items) { item.PermitProcTypes = PermissionManager.ConvertPermittedProcType(item.Permission.PermittedProcType); } var targets = items.Where(x => !x.PermitProcTypes.Contains(PermitProcType.None)).Select(x => x.Target).ToList(); return(targets); } }
/// <summary> /// Get permissions base on roleId and targetId /// </summary> /// <param name="roleId"></param> /// <param name="targetId"></param> /// <returns></returns> public PermissionResult GetPermissions(int roleId, int targetId) { using (var context = AuthorizationContext.CreateContext()) { var permissions = (from p in context.Permissions where p.RoleID == roleId && p.TargetID == targetId && p.DeleteFlag == "0" orderby p.PermittedProcType descending select p).Take(1).SingleOrDefault(); var result = new PermissionResult(); if (permissions == null) { result.PermitFlag = true; result.PermitProcTypes = new List <PermitProcType>() { PermitProcType.None }; } else { result.PermitFlag = permissions.PermitFlag == 1 ? true : false; result.PermitProcTypes = ConvertPermittedProcType(permissions.PermittedProcType); } return(result); } }
/// <summary> /// Get target by targetId /// </summary> /// <param name="targetId"></param> /// <returns></returns> public Targets GetTargets(int targetId) { using (AuthorizationContext context = AuthorizationContext.CreateContext()) { var target = from a in context.Targets where a.TargetID == targetId && a.DeleteFlag == "0" select a; return(target.SingleOrDefault()); } }
public List <Roles> GetRolesById(int roleId) { using (AuthorizationContext context = AuthorizationContext.CreateContext()) { var role = from a in context.Roles where a.RoleID == roleId && a.DeleteFlag == "0" select a; return(role.ToList()); } }
/// <summary> /// /// </summary> /// <returns></returns> private int GetNextTargetId() { using (var context = AuthorizationContext.CreateContext()) { var id = (from t in context.Targets where t.DeleteFlag == "0" select t).Max(x => x.TargetID); return(id + 1); } }
/// <summary> /// Get target by Content and ContentType /// </summary> /// <param name="content"></param> /// <param name="contentType"></param> /// <returns></returns> public Targets GetTargets(string content, ContentTypes?contentType) { using (AuthorizationContext context = AuthorizationContext.CreateContext()) { var target = from a in context.Targets where a.Content.ToLower().Contains(content.ToLower()) && (contentType == null || a.ContentType == (int)contentType.Value) && a.DeleteFlag == "0" select a; return(target.FirstOrDefault()); } }
/// <summary> /// ユーザーに紐づくロール情報を取得する /// </summary> /// <param name="userId"></param> /// <returns></returns> public List <Roles> GetRolesByUserId(long userId) { using (AuthorizationContext context = AuthorizationContext.CreateContext()) { var role = from r in context.Roles join ur in context.UserInRoles on r.RoleID equals ur.RoleID where ur.UserID == userId && r.DeleteFlag == "0" && ur.DeleteFlag == "0" select r; return(role.ToList()); } }
/// <summary> /// Return list target get by RoleId list. /// </summary> /// <param name="roleIds"></param> /// <returns></returns> public List <Targets> GetTargetsByRoleIds(List <int> roleIds) { using (var context = AuthorizationContext.CreateContext()) { var targets = from t in context.Targets join p in context.Permissions on t.TargetID equals p.TargetID where roleIds.Contains(p.RoleID) && t.DeleteFlag == "0" && p.DeleteFlag == "0" select t; return(targets.ToList()); } }
/// <summary> /// ユーザーに対してロールの紐づけの登録を行える /// </summary> public void AddRoleToUser(int roleId, int userId) { using (var context = AuthorizationContext.CreateContext()) { CheckRoleMustExist(context, roleId); CheckUserInRole(context, roleId, userId); var userInRole = new UserInRoles(); userInRole.RoleID = roleId; userInRole.UserID = userId; userInRole.CreatedUser = GetEmployeeID(); userInRole.CreatedDate = DateTime.Now; context.UserInRoles.Add(userInRole); context.SaveChanges(); } }
/// <summary> /// パーミッションの登録を行える /// </summary> /// <param name="roleId"></param> /// <param name="targetId"></param> /// <param name="permitFlag"></param> /// <param name="permittedProcType"></param> public void AddPermission(int roleId, int targetId, bool permitFlag, int permittedProcType) { using (var context = AuthorizationContext.CreateContext()) { CheckRoleAndTargetHasAlreadyRegister(context, roleId, targetId); var permission = new Permissions(); permission.RoleID = roleId; permission.TargetID = targetId; permission.PermitFlag = permitFlag ? 1 : 0; permission.PermittedProcType = permittedProcType; permission.CreatedUser = GetEmployeeID(); permission.CreatedDate = DateTime.Now; context.Permissions.Add(permission); context.SaveChanges(); } }
/// <summary> /// ロールの登録を行える /// </summary> /// <param name="name"></param> /// <param name="description"></param> public void AddRole(string name, string description) { Contract.NotEmpty(name, "name"); using (AuthorizationContext context = AuthorizationContext.CreateContext()) { CheckDuplicateRoleName(context, name); var newRole = new Roles(); newRole.RoleID = GetNextRoleId(context); newRole.RoleName = name; newRole.Description = description; newRole.CreatedDate = DateTime.Now; newRole.CreatedUser = GetEmployeeID().ToString(); context.Roles.Add(newRole); context.SaveChanges(); } }
public void UpdateRole(int roleId, string roleName) { Contract.NotEmpty(roleName, "roleName"); using (var context = AuthorizationContext.CreateContext()) { CheckDuplicateRoleName(context, roleName); //Get exist role var existRole = context.Roles.SingleOrDefault(x => x.RoleID == roleId && x.DeleteFlag == "0"); if (existRole != null) { existRole.RoleName = roleName; context.Roles.Attach(existRole); context.Entry(existRole).State = EntityState.Modified; context.SaveChanges(); } } }
/// <summary> /// パーミッションの削除が行える /// </summary> /// <param name="roleId"></param> /// <param name="targetId"></param> public void RemovePermission(int roleId, int targetId) { using (var context = AuthorizationContext.CreateContext()) { //get exist permission var permission = (from p in context.Permissions where p.RoleID == roleId && p.TargetID == targetId && p.DeleteFlag == "0" select p).SingleOrDefault(); if (permission == null) { throw new Exception(""); } context.Permissions.Remove(permission); context.SaveChanges(); } }
/// <summary> /// Remove role out of roles /// </summary> /// <param name="roleId"></param> /// <param name="parentRoleId"></param> public void RemoveRoleInRoles(int roleId, int parentRoleId) { using (AuthorizationContext context = AuthorizationContext.CreateContext()) { //get exist role in roles var role = (from r in context.RoleInRoles where r.RoleID == roleId && r.ParentRoleID == parentRoleId && r.DeleteFlag == "0" select r).SingleOrDefault(); if (role == null) { throw new Exception(""); } context.RoleInRoles.Remove(role); context.SaveChanges(); } }
public void RemoveTargetInTargets(int targetId, int parentTargetId) { using (AuthorizationContext context = AuthorizationContext.CreateContext()) { //get exist target in targets var target = (from r in context.TargetInTargets where r.TargetID == targetId && r.ParentTargetID == parentTargetId && r.DeletedFlag == "0" select r).SingleOrDefault(); if (target == null) { throw new Exception(""); } context.TargetInTargets.Remove(target); context.SaveChanges(); } }
/// <summary> /// ターゲットに紐づくターゲットを削除する /// </summary> /// <param name="targetId"></param> public void RemoveTarget(int targetId) { using (AuthorizationContext context = AuthorizationContext.CreateContext()) { var parentTargets = GetParentTargets(context); CheckTargetHaveChildTargetBeforeDelete(parentTargets, targetId); CheckTargetHaveReferenceWithPermissionBeforeDelete(context, targetId); //get target exist var target = context.Targets.SingleOrDefault(x => x.TargetID == targetId && x.DeleteFlag == "0"); if (target == null) { throw new Exception(""); } context.Targets.Remove(target); context.SaveChanges(); } }
/// <summary> /// ターゲットの登録を行える /// </summary> /// <param name="title">ターゲットに紐づくターゲットが存在する場合はエラーメッセージを表示する</param> /// <param name="content">ターゲットのコンテンツを登録する</param> /// <param name="contentType">ターゲットのコンテンツタイプを登録する(URL、Control、グループなど)</param> public void AddTargets(string title, string content, ContentTypes contentType) { Contract.NotEmpty(title, "title"); Contract.NotNull(contentType, "contentType"); using (AuthorizationContext context = AuthorizationContext.CreateContext()) { CheckTargetByTitleOrContent(context, title, content); var target = new Targets(); target.TargetID = GetNextTargetId(); target.Title = title; target.Content = content; target.ContentType = (short)contentType; target.CreatedDate = DateTime.Now; target.CreatedUser = GetEmployeeID(); context.Targets.Add(target); context.SaveChanges(); } }
/// <summary> /// ユーザーに紐づくロールを削除する /// </summary> /// <param name="roleId"></param> /// <param name="userId"></param> public void RemoveRoleFromUser(int roleId, int userId) { using (var context = AuthorizationContext.CreateContext()) { //get user exist in role var userInRole = (from ur in context.UserInRoles where ur.RoleID == roleId && ur.UserID == userId && ur.DeleteFlag == "0" select ur).SingleOrDefault(); if (userInRole == null) { throw new Exception(""); } context.UserInRoles.Remove(userInRole); context.SaveChanges(); } }
/// <summary> /// ロールの削除が行える /// </summary> /// <param name="roleId"></param> public void RemoveRole(int roleId) { using (AuthorizationContext context = AuthorizationContext.CreateContext()) { var parentRoles = GetParentRoles(context); //Cannot delete role if this role have child-role CheckRoleHaveChildRoleBeforeDelete(parentRoles, roleId); //Cannot delete role if this role have reference with user. CheckRoleHaveReferenceWithUserBeforeDelete(roleId); //Get exist role var role = context.Roles.SingleOrDefault(x => x.RoleID == roleId && x.DeleteFlag == "0"); if (role == null) { throw new Exception(""); } context.Roles.Remove(role); context.SaveChanges(); } }
/// <summary> /// ターゲットに紐づくターゲットを登録する /// </summary> /// <param name="targetId"></param> /// <param name="parentTargetId"></param> public void AddTargetInTargets(int targetId, int parentTargetId) { if (targetId == parentTargetId) { throw new Exception(""); } using (var context = AuthorizationContext.CreateContext()) { var parentTargets = GetParentTargets(context); CheckTargetHaveOneParent(parentTargets, targetId); CheckParentTargetIsChildOfTarget(parentTargets, parentTargetId, targetId); var newTarget = new TargetInTargets(); newTarget.TargetID = targetId; newTarget.ParentTargetID = parentTargetId; newTarget.CreatedUser = GetEmployeeID(); newTarget.CreatedDate = DateTime.Now; context.TargetInTargets.Add(newTarget); context.SaveChanges(); } }
/// <summary> /// ロールに紐づくロールを登録する /// </summary> /// <param name="roleId"></param> /// <param name="roleParentId"></param> public void AddRoleInRoles(int roleId, int roleParentId) { if (roleId == roleParentId) { throw new Exception(""); } using (var context = AuthorizationContext.CreateContext()) { var parentRoles = GetParentRoles(context); //紐付けする親ロールが1つ以上の場合はエラーメッセージを表示する CheckRoleHaveOneParent(parentRoles, roleId); CheckParentRoleIsChildOfRole(parentRoles, roleParentId, roleId); var newRole = new RoleInRoles(); newRole.RoleID = roleId; newRole.ParentRoleID = roleParentId; newRole.CreatedUser = GetEmployeeID().ToString(); newRole.CreatedDate = DateTime.Now; context.RoleInRoles.Add(newRole); context.SaveChanges(); } }