コード例 #1
0
 public RestrictedActionAttribute(
     PermissionResourceTypeEnum resourceType,
     PermissionActionEnum action,
     bool childAction = false)
 {
     _permissionSettingIdentity = PermissionSettingIdentity.Of(action, resourceType);
     _childAction = childAction;
 }
コード例 #2
0
 private PermissionUpdateModel(
     IntranetMemberGroup group,
     PermissionSettingValues settingValues,
     PermissionSettingIdentity settingIdentity)
 {
     Group           = group;
     SettingIdentity = settingIdentity;
     SettingValues   = settingValues;
 }
コード例 #3
0
        protected virtual IEnumerable <IIntranetMember> GetUsersWithAccess(PermissionSettingIdentity permissionSettingIdentity)
        {
            var result = _intranetMemberService
                         .GetAll()
                         .Where(member => _permissionsService.Check(member, permissionSettingIdentity))
                         .OrderBy(user => user.DisplayedName);

            return(result);
        }
コード例 #4
0
ファイル: GroupService.cs プロジェクト: nielshenriksen/Uintra
 public bool ValidatePermission(IPublishedContent content)
 {
     if (content.DocumentTypeAlias == GroupsCreatePage)
     {
         var hasPermission = _permissionsService.Check(PermissionSettingIdentity.Of(PermissionActionEnum.Create, PermissionResourceType));
         return(hasPermission);
     }
     return(true);
 }
コード例 #5
0
        public RestrictedActionAttribute(int resourceType, int action, bool childAction = false)
        {
            var permissionActionTypeProvider   = DependencyResolver.Current.GetService <IPermissionActionTypeProvider>();
            var permissionResourceTypeProvider = DependencyResolver.Current.GetService <IPermissionResourceTypeProvider>();

            _permissionSettingIdentity = PermissionSettingIdentity.Of(
                permissionActionTypeProvider[action],
                permissionResourceTypeProvider[resourceType]);

            _childAction = childAction;
        }
コード例 #6
0
        protected virtual bool CanPerform(IIntranetActivity activity, PermissionActionEnum action, PermissionActionEnum administrationAction)
        {
            var currentMember = _intranetMemberService.GetCurrentMember();
            var ownerId       = ((IHaveOwner)activity).OwnerId;
            var isOwner       = ownerId == currentMember.Id;

            var act    = isOwner ? action : administrationAction;
            var result = _permissionsService.Check(currentMember, PermissionSettingIdentity.Of(act, PermissionActivityType));

            return(result);
        }
コード例 #7
0
        private static PermissionUpdateModel CreatePermission(
            IntranetMemberGroup group,
            Resource resource,
            PermissionActionEnum action,
            bool allowed = true, bool enabled = true)
        {
            var identity = new PermissionSettingIdentity(action, resource);
            var settings = new PermissionSettingValues(allowed, enabled);

            return(new PermissionUpdateModel(group, settings, identity));
        }
コード例 #8
0
ファイル: GroupService.cs プロジェクト: nielshenriksen/Uintra
        public bool CanPerform(GroupModel group, Enum action, Enum administrationAction)
        {
            var currentMember = _intranetMemberService.GetCurrentMember();
            var ownerId       = group.CreatorId;
            var isOwner       = ownerId == currentMember.Id;

            var act    = isOwner ? action : administrationAction;
            var result = _permissionsService.Check(currentMember, PermissionSettingIdentity.Of(act, PermissionResourceType));

            return(result);
        }
        public static IEnumerable <PermissionSettingSchema> BuildTree(Enum resource, ITree <Enum> actionTree)
        {
            var treeWithParents = actionTree
                                  .WithAttachedParents()
                                  .Flatten();

            var settings = treeWithParents.Select(hierarchicalItem =>
                                                  PermissionSettingSchema.Of(
                                                      PermissionSettingIdentity.Of(hierarchicalItem.current, resource),
                                                      hierarchicalItem.parent));

            return(settings);
        }
コード例 #10
0
        public virtual GroupPermissionsViewModel Save(PermissionUpdateViewModel update)
        {
            var settingIdentity = PermissionSettingIdentity.Of(
                _actionTypeProvider[update.ActionId],
                _resourceTypeProvider[update.ResourceTypeId]);
            var settingValue = PermissionSettingValues.Of(update.Allowed, update.Enabled);
            var targetGroup  = _intranetMemberGroupProvider[update.IntranetMemberGroupId];

            var mappedUpdate = PermissionUpdateModel.Of(targetGroup, settingValue, settingIdentity);

            _permissionsService.Save(mappedUpdate);

            return(Get(update.IntranetMemberGroupId));
        }
コード例 #11
0
        public async Task <GroupPermissionsViewModel> Save(PermissionUpdateViewModel update)
        {
            var settingIdentity = new PermissionSettingIdentity(
                _actionTypeProvider[update.ActionId],
                _resourceTypeProvider[update.ResourceTypeId]);
            var settingValue = new PermissionSettingValues(update.Allowed, update.Enabled);
            var targetGroup  = _intranetMemberGroupProvider[update.IntranetMemberGroupId];
            //var targetGroup = _intranetMemberGroupService.GetAll().First(x => x.Id == update.IntranetMemberGroupId);

            var mappedUpdate = new PermissionUpdateModel(targetGroup, settingValue, settingIdentity);
            await _permissionsService.SaveAsync(mappedUpdate);

            return(await Get(update.IntranetMemberGroupId));
        }
コード例 #12
0
        public static IEnumerable <PermissionSettingSchema> BuildTree(Enum resource, ITree <Enum> actionTree)
        {
            var treeWithParents = actionTree
                                  .WithAttachedParents()
                                  .Flatten();

            var settings = treeWithParents
                           .Select(item =>
            {
                var permissionIdentity = new PermissionSettingIdentity(item.current, resource);
                return(new PermissionSettingSchema(permissionIdentity, item.parent));
            });

            return(settings);
        }
コード例 #13
0
        public async Task <bool> CheckAsync(IIntranetMember member, PermissionSettingIdentity settingsIdentity)
        {
            if (member.Groups == null)
            {
                return(false);
            }

            var permission = (await CurrentCacheAsync).Where(p => member.Groups.Select(g => g.Id).Contains(p.Group.Id) && p.SettingIdentity.Equals(settingsIdentity));

            var isAllowed = permission
                            .ToList()
                            .Exists(p => p.SettingValues.IsAllowed);

            return(isAllowed);
        }
コード例 #14
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (Skip(filterContext))
            {
                return;
            }

            var permissionsService = HttpContext.Current.GetService <IPermissionsService>();
            var isUserHasAccess    = permissionsService.Check(PermissionSettingIdentity.Of(_action, _permissionResourceType));

            if (!isUserHasAccess)
            {
                var context = filterContext.Controller.ControllerContext.HttpContext;
                Deny(context);
            }
        }
コード例 #15
0
        public virtual ActionResult OwnerEdit(Guid ownerId, string ownerIdPropertyName, PermissionResourceTypeEnum activityType, IActivityCreateLinks links)
        {
            var model = new IntranetActivityOwnerEditModel
            {
                Owner = _intranetMemberService.Get(ownerId).Map <MemberViewModel>(),
                OwnerIdPropertyName = ownerIdPropertyName,
                Links = links
            };

            model.CanEditOwner = _permissionsService.Check(activityType, PermissionActionEnum.EditOwner);

            if (model.CanEditOwner)
            {
                model.Members = GetUsersWithAccess(PermissionSettingIdentity.Of(PermissionActionEnum.Create, activityType));
            }

            return(PartialView(OwnerEditViewPath, model));
        }
コード例 #16
0
 public ContentRestrictedActionApiAttribute(PermissionResourceTypeEnum resourceType, PermissionActionEnum action)
 {
     _permissionSettingIdentity = PermissionSettingIdentity.Of(action, resourceType);
 }
コード例 #17
0
 private IEnumerable <IntranetMember> GetUsersWithAccess(PermissionSettingIdentity permissionSettingIdentity) =>
 _memberService
 .GetAll()
 .Where(member => _permissionsService.Check(member, permissionSettingIdentity))
 .OrderBy(user => user.DisplayedName)
 .ToArray();
コード例 #18
0
 public static PermissionUpdateModel Of(
     IntranetMemberGroup group,
     PermissionSettingValues settingValues,
     PermissionSettingIdentity identity) =>
 new PermissionUpdateModel(group, settingValues, identity);
コード例 #19
0
        public async Task <bool> CheckAsync(PermissionSettingIdentity settingsIdentity)
        {
            var member = await _intranetMemberService.GetCurrentMemberAsync();

            return(await CheckAsync(member, settingsIdentity));
        }
コード例 #20
0
        public virtual IEnumerable <PermissionSettingIdentity> GetDescendants(PermissionSettingIdentity parent)
        {
            var children = SettingsByParentSettingIdentityLookup[parent].ToArray();

            return(children.Concat(children.SelectMany(GetDescendants)));
        }
コード例 #21
0
 public virtual PermissionSettingValues GetDefault(PermissionSettingIdentity settingIdentity) =>
 SettingsOverrides
 .ItemOrNone(settingIdentity)
 .IfNone(() => PermissionSettingValues.Of(GlobalIsAllowedDefault, GlobalIsEnabledDefault));
コード例 #22
0
 public virtual PermissionSettingValues GetDefault(PermissionSettingIdentity settingIdentity) =>
 SettingsOverrides.ItemOrDefault(settingIdentity)
 ?? new PermissionSettingValues(GlobalIsAllowedDefault, GlobalIsEnabledDefault);