Core: added collaborator group and type
This commit is contained in:
parent
e9ed1cf5b2
commit
90fdd58d1c
@ -39,16 +39,17 @@ public class SubscriptionManager
|
||||
{
|
||||
Constants.DocSpaceAdmin.ID,
|
||||
Constants.Everyone.ID,
|
||||
Constants.RoomAdmin.ID
|
||||
Constants.RoomAdmin.ID,
|
||||
Constants.Collaborator.ID,
|
||||
};
|
||||
|
||||
|
||||
public SubscriptionManager(CachedSubscriptionService service, TenantManager tenantManager, ICache cache)
|
||||
{
|
||||
_service = service ?? throw new ArgumentNullException("subscriptionManager");
|
||||
_tenantManager = tenantManager;
|
||||
_cache = cache;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void Subscribe(string sourceID, string actionID, string objectID, string recipientID)
|
||||
{
|
||||
var s = new SubscriptionRecord
|
||||
@ -79,7 +80,7 @@ public class SubscriptionManager
|
||||
|
||||
_service.SaveSubscription(s);
|
||||
}
|
||||
|
||||
|
||||
public void Unsubscribe(string sourceID, string actionID, string objectID, string recipientID)
|
||||
{
|
||||
var s = new SubscriptionRecord
|
||||
@ -110,17 +111,17 @@ public class SubscriptionManager
|
||||
|
||||
_service.SaveSubscription(s);
|
||||
}
|
||||
|
||||
|
||||
public void UnsubscribeAll(string sourceID, string actionID, string objectID)
|
||||
{
|
||||
_service.RemoveSubscriptions(GetTenant(), sourceID, actionID, objectID);
|
||||
}
|
||||
|
||||
|
||||
public void UnsubscribeAll(string sourceID, string actionID)
|
||||
{
|
||||
_service.RemoveSubscriptions(GetTenant(), sourceID, actionID);
|
||||
}
|
||||
|
||||
|
||||
public string[] GetSubscriptionMethod(string sourceID, string actionID, string recipientID)
|
||||
{
|
||||
IEnumerable<SubscriptionMethod> methods;
|
||||
@ -144,27 +145,27 @@ public class SubscriptionManager
|
||||
|
||||
return m != null ? m.Methods : Array.Empty<string>();
|
||||
}
|
||||
|
||||
|
||||
public string[] GetRecipients(string sourceID, string actionID, string objectID)
|
||||
{
|
||||
return _service.GetRecipients(GetTenant(), sourceID, actionID, objectID);
|
||||
}
|
||||
|
||||
|
||||
public object GetSubscriptionRecord(string sourceID, string actionID, string recipientID, string objectID)
|
||||
{
|
||||
return _service.GetSubscription(GetTenant(), sourceID, actionID, recipientID, objectID);
|
||||
}
|
||||
|
||||
|
||||
public string[] GetSubscriptions(string sourceID, string actionID, string recipientID, bool checkSubscribe = true)
|
||||
{
|
||||
return _service.GetSubscriptions(GetTenant(), sourceID, actionID, recipientID, checkSubscribe);
|
||||
}
|
||||
|
||||
|
||||
public bool IsUnsubscribe(string sourceID, string recipientID, string actionID, string objectID)
|
||||
{
|
||||
return _service.IsUnsubscribe(GetTenant(), sourceID, actionID, recipientID, objectID);
|
||||
}
|
||||
|
||||
|
||||
public void UpdateSubscriptionMethod(string sourceID, string actionID, string recipientID, string[] senderNames)
|
||||
{
|
||||
var m = new SubscriptionMethod
|
||||
@ -215,5 +216,5 @@ public class SubscriptionManager
|
||||
private int GetTenant()
|
||||
{
|
||||
return _tenantManager.GetCurrentTenant().Id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -886,16 +886,23 @@ public class UserManager
|
||||
}
|
||||
|
||||
UserGroupRef r;
|
||||
if (groupId == Constants.GroupManager.ID || groupId == Constants.GroupUser.ID)
|
||||
if (groupId == Constants.GroupManager.ID || groupId == Constants.GroupUser.ID || groupId == Constants.GroupCollaborator.ID)
|
||||
{
|
||||
var user = refs.TryGetValue(UserGroupRef.CreateKey(Tenant.Id, userId, Constants.GroupUser.ID, UserGroupRefType.Contains), out r) && !r.Removed;
|
||||
var exists = refs.TryGetValue(UserGroupRef.CreateKey(Tenant.Id, userId, Constants.GroupUser.ID, UserGroupRefType.Contains), out r) && !r.Removed;
|
||||
if (groupId == Constants.GroupUser.ID)
|
||||
{
|
||||
return user;
|
||||
return exists;
|
||||
}
|
||||
|
||||
exists = refs.TryGetValue(UserGroupRef.CreateKey(Tenant.Id, userId, Constants.GroupCollaborator.ID, UserGroupRefType.Contains), out r) && !r.Removed;
|
||||
if (groupId == Constants.GroupCollaborator.ID)
|
||||
{
|
||||
return exists;
|
||||
}
|
||||
|
||||
if (groupId == Constants.GroupManager.ID)
|
||||
{
|
||||
return !user;
|
||||
return !exists;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -38,4 +38,5 @@ public enum EmployeeType
|
||||
RoomAdmin = 1,
|
||||
User = 2,
|
||||
DocSpaceAdmin = 3,
|
||||
}
|
||||
Collaborator = 4,
|
||||
}
|
@ -24,9 +24,9 @@
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
using Action = ASC.Common.Security.Authorizing.Action;
|
||||
using AuthConst = ASC.Common.Security.Authorizing.Constants;
|
||||
|
||||
using Action = ASC.Common.Security.Authorizing.Action;
|
||||
using AuthConst = ASC.Common.Security.Authorizing.Constants;
|
||||
|
||||
namespace ASC.Core.Users;
|
||||
|
||||
[Singletone]
|
||||
@ -59,7 +59,7 @@ public sealed class Constants
|
||||
|
||||
private readonly IConfiguration _configuration;
|
||||
|
||||
#region system group and category groups
|
||||
#region system group and category groups
|
||||
|
||||
public static readonly Guid SysGroupCategoryId = new Guid("{7717039D-FBE9-45ad-81C1-68A1AA10CE1F}");
|
||||
|
||||
@ -87,12 +87,19 @@ public sealed class Constants
|
||||
Name = AuthConst.DocSpaceAdmin.Name,
|
||||
};
|
||||
|
||||
public static readonly GroupInfo GroupCollaborator = new(SysGroupCategoryId)
|
||||
{
|
||||
ID = AuthConst.Collaborator.ID,
|
||||
Name = AuthConst.Collaborator.Name,
|
||||
};
|
||||
|
||||
public static readonly GroupInfo[] BuildinGroups = new[]
|
||||
{
|
||||
GroupEveryone,
|
||||
GroupUser,
|
||||
GroupManager,
|
||||
GroupAdmin,
|
||||
{
|
||||
GroupEveryone,
|
||||
GroupUser,
|
||||
GroupManager,
|
||||
GroupAdmin,
|
||||
GroupCollaborator,
|
||||
};
|
||||
|
||||
public static readonly UserInfo LostUser = new UserInfo
|
||||
@ -119,10 +126,10 @@ public sealed class Constants
|
||||
Name = "Unknown"
|
||||
};
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
|
||||
#region authorization rules module to work with users
|
||||
#region authorization rules module to work with users
|
||||
|
||||
public static readonly Action Action_EditUser = new Action(
|
||||
new Guid("{EF5E6790-F346-4b6e-B662-722BC28CB0DB}"),
|
||||
@ -136,5 +143,5 @@ public sealed class Constants
|
||||
new Guid("{1D4FEEAC-0BF3-4aa9-B096-6D6B104B79B5}"),
|
||||
"Edit categories and groups");
|
||||
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
@ -65,6 +65,17 @@ public static class UserExtensions
|
||||
return ui != null && userManager.IsUserInGroup(ui.Id, Constants.GroupUser.ID);
|
||||
}
|
||||
|
||||
public static bool IsCollaborator(this UserManager userManager, UserInfo userInfo)
|
||||
{
|
||||
return userInfo != null && userManager.IsUserInGroup(userInfo.Id, Constants.GroupCollaborator.ID);
|
||||
}
|
||||
|
||||
public static bool IsCollaborator(this UserManager userManager, Guid id)
|
||||
{
|
||||
var userInfo = userManager.GetUsers(id);
|
||||
return userManager.IsCollaborator(userInfo);
|
||||
}
|
||||
|
||||
public static bool IsOutsider(this UserManager userManager, Guid id)
|
||||
{
|
||||
return userManager.IsUser(id) && id == Constants.OutsideUser.Id;
|
||||
@ -98,7 +109,10 @@ public static class UserExtensions
|
||||
|
||||
public static EmployeeType GetUserType(this UserManager userManager, Guid id)
|
||||
{
|
||||
return userManager.IsDocSpaceAdmin(id) ? EmployeeType.DocSpaceAdmin : userManager.IsUser(id) ? EmployeeType.User : EmployeeType.RoomAdmin;
|
||||
return userManager.IsDocSpaceAdmin(id) ? EmployeeType.DocSpaceAdmin :
|
||||
userManager.IsUser(id) ? EmployeeType.User :
|
||||
userManager.IsCollaborator(id) ? EmployeeType.Collaborator :
|
||||
EmployeeType.RoomAdmin;
|
||||
}
|
||||
|
||||
private const string _extMobPhone = "extmobphone";
|
||||
@ -146,4 +160,4 @@ public static class UserExtensions
|
||||
|
||||
ui.ContactsList = newContacts;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user