/// <summary> /// Get permissions for specified user object /// </summary> /// <param name="userName"></param> /// <param name="id"></param> /// <returns></returns> public static PermissionEnum GetUserObjectPermissions( string userName, int id) { PermissionEnum permissions = PermissionEnum.None; UserObject uo = InterfaceRefs.IUserObjectDao.ReadHeader(id); AccessControlList acl = AccessControlList.Deserialize(uo); permissions = acl.GetUserPermissions(userName); return(permissions); }
/// <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); }