コード例 #1
0
    public void Form2obj(ITableWithPermissions obj)
    {
        int acccessLevel = 0;
        int.TryParse(TxtAccessLevel.Text, out acccessLevel);

        int writeAccessLevel = 0;
        int.TryParse(TxtWriteAccessLevel.Text, out writeAccessLevel);

        obj.ReadAccessLevel = acccessLevel;
        obj.ReadAccessCode = TxtAccessCode.Text;
        obj.ReadAccessType = (MenuAccesstype)int.Parse(DropAccessType.SelectedValue);

        obj.WriteAccessLevel = writeAccessLevel;
        obj.WriteAccessCode = TxtWriteAccessCode.Text;
        obj.WriteAccessType = (MenuAccesstype)int.Parse(DropWriteAccessType.SelectedValue);

        //read roles
        obj.ReadRolenames.Clear();
        foreach (ListItem item in ListRoles.Items)
        {
            if (item.Selected)
                obj.ReadRolenames.Add(item.Value);
        }

        //write roles
        obj.WriteRolenames.Clear();
        foreach (ListItem item in ListWriteRoles.Items)
        {
            if (item.Selected)
                obj.WriteRolenames.Add(item.Value);
        }
    }
コード例 #2
0
    public void Obj2form(ITableWithPermissions obj)
    {
        LitId.Text = obj.ReadPermissionId.ToString();
        LitWriteId.Text = obj.WritePermissionId.ToString();

        TxtAccessLevel.Text = obj.ReadAccessLevel.ToString();
        TxtWriteAccessLevel.Text = obj.WriteAccessLevel.ToString();

        TxtAccessCode.Text = obj.ReadAccessCode;
        TxtWriteAccessCode.Text = obj.WriteAccessCode;

        Utility.SetDropByValue(DropAccessType, ((int)obj.ReadAccessType).ToString());
        Utility.SetDropByValue(DropWriteAccessType, ((int)obj.WriteAccessType).ToString());

        Utility.SetListBoxByValues(ListRoles, obj.ReadRolenames, true);
        Utility.SetListBoxByValues(ListWriteRoles, obj.WriteRolenames, true);
    }
コード例 #3
0
        /// <summary>
        /// update obj object in DAL class, before db update
        /// </summary>
        /// <param name="obj"></param>
        public void UpdatePermissionObj(ITableWithPermissions obj)
        {
            //read permission (before trans)
            if (obj.ReadAccessType == MenuAccesstype.Public)
                obj.ReadPermissionId = 0;
            else
                obj.ReadPermissionId =
                    new PermissionProvider().AddRolesToPermission(
                    obj.ReadPermissionId, obj.ReadRolenames, true);

            //write permission (before trans)
            if (obj.WriteAccessType == MenuAccesstype.Public)
                obj.WritePermissionId = 0;
            else
                obj.WritePermissionId =
                    new PermissionProvider().AddRolesToPermission(
                    obj.WritePermissionId, obj.WriteRolenames, true);
        }
コード例 #4
0
 public bool IsItemNotAllowedForWrite(ITableWithPermissions obj)
 {
     return !IsItemAllowed(obj, true);
 }
コード例 #5
0
 public bool IsItemNotAllowed(ITableWithPermissions obj)
 {
     return !IsItemAllowed(obj, false);
 }
コード例 #6
0
        /// <summary>
        /// check current user permissions for ITableWithPermissions obj
        /// </summary>
        /// <param name="obj"></param>
        /// <returns>if obj is allowed or not for current user</returns>
        public bool IsItemAllowed(ITableWithPermissions obj, bool writeMode)
        {
            bool result = true;
            MenuAccesstype accessType;
            List<string> rolenames;
            string accessCode;
            int accessLevel;

            if (writeMode)
            {
                accessType = obj.WriteAccessType;
                rolenames = obj.WriteRolenames;
                accessCode = obj.WriteAccessCode;
                accessLevel = obj.WriteAccessLevel;
            }
            else
            {
                accessType = obj.ReadAccessType;
                rolenames = obj.ReadRolenames;
                accessCode = obj.ReadAccessCode;
                accessLevel = obj.ReadAccessLevel;
            }

            if (accessType != MenuAccesstype.Public)
            {
                //check current logged user permission
                result = false;
                if (PgnUserCurrent.IsAuthenticated)
                {
                    if (Roles.IsUserInRole("admin"))
                    {
                        //admin always granted
                        result = true;
                    }
                    else if (rolenames.Count > 0)
                    {
                        //check user roles
                        //obj.Rolenames uses roles cached in cookie
                        //Roles.GetRolesForUser() launch the method each time
                        foreach (string role in rolenames)
                        {
                            if (Roles.IsUserInRole(role))
                            {
                                result = true;
                                break;
                            }
                        }
                    }
                    else
                    {
                        //all registered users
                        result = true;
                    }

                    if (result && !Roles.IsUserInRole("admin")/*20150127*/)
                    {
                        //check AccessCode
                        if (!string.IsNullOrEmpty(accessCode))
                        {
                            if (!string.IsNullOrEmpty(PgnUserCurrent.Current.AccessCode))
                            {
                                if (accessCode != PgnUserCurrent.Current.AccessCode)
                                    result = false;
                            }
                        }
                        //checl AccessLevel
                        if (accessLevel > 0)
                        {
                            if (accessLevel > PgnUserCurrent.Current.AccessLevel)
                                result = false;
                        }
                    }
                }
            }
            return result;
        }
コード例 #7
0
 public void CreatePermissionObj(ITableWithPermissions obj)
 {
     //create read permission
     obj.ReadPermissionId =
         this.AddRolesToPermission(
         obj.ReadPermissionId, obj.ReadRolenames, true);
     //create write permission
     obj.WritePermissionId =
         this.AddRolesToPermission(
         obj.WritePermissionId, obj.WriteRolenames, true);
 }