示例#1
0
        /// <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);
            }
        }
示例#3
0
 /// <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());
     }
 }
示例#5
0
        /// <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);
            }
        }
示例#6
0
        /// <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());
     }
 }
示例#8
0
 /// <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();
     }
 }
示例#15
0
 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();
     }
 }
示例#16
0
        /// <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();
            }
        }
示例#17
0
 /// <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();
            }
        }
示例#20
0
        /// <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();
            }
        }