Beispiel #1
0
/// <summary>
/// Get the list of permissions the user has for the specified object
/// </summary>
/// <param name="userName"></param>
/// <param name="internalObjectName"></param>
/// <returns></returns>

        public static PermissionEnum GetUserPermissions(
            string userName,
            string internalObjectName)
        {
            PermissionEnum permissions = PermissionEnum.None;

            if (UserObject.IsUserObjectInternalName(internalObjectName))             // UserObject
            {
                UserObjectType type;
                int            id;

                string key = userName.ToUpper() + "_" + internalObjectName.ToUpper();
                if (PermissionsCache.ContainsKey(key))
                {
                    return(PermissionsCache[key]);
                }

                UserObject.ParseObjectTypeAndIdFromInternalName(internalObjectName, out type, out id);
                if (id <= 0)
                {
                    if (ClientState.IsAdministrator())
                    {
                        return(PermissionEnum.Read);
                    }
                    else
                    {
                        return(PermissionEnum.None);
                    }
                }

                UserObject        uo  = InterfaceRefs.IUserObjectDao.ReadHeader(id);
                AccessControlList acl = AccessControlList.Deserialize(uo);

                permissions           = acl.GetUserPermissions(userName);
                PermissionsCache[key] = permissions;                 // update cache
            }

            else             // assume database table name with full access
            {
                permissions = PermissionEnum.Read | PermissionEnum.Write;
            }

            return(permissions);
        }