Api.Core: added employee type
This commit is contained in:
parent
a7f75bcffe
commit
eb485d035a
@ -62,9 +62,9 @@ public class DocSpaceLinkHelper
|
||||
return _signature.Create(linkId);
|
||||
}
|
||||
|
||||
public string MakeKey(string email)
|
||||
public string MakeKey(string email, EmployeeType employeeType)
|
||||
{
|
||||
return email + ConfirmType.LinkInvite.ToStringFast() + EmployeeType.User.ToStringFast();
|
||||
return email + ConfirmType.LinkInvite.ToStringFast() + employeeType.ToStringFast();
|
||||
}
|
||||
|
||||
public Guid Parse(string key)
|
||||
@ -72,14 +72,14 @@ public class DocSpaceLinkHelper
|
||||
return _signature.Read<Guid>(key);
|
||||
}
|
||||
|
||||
public ValidationResult Validate(string key, string email)
|
||||
public ValidationResult Validate(string key, string email, EmployeeType employeeType)
|
||||
{
|
||||
return string.IsNullOrEmpty(email) ? ValidateExternalLink(key) : ValidateEmailLink(email, key);
|
||||
return string.IsNullOrEmpty(email) ? ValidateRoomExternalLink(key) : ValidateEmailLink(email, key, employeeType);
|
||||
}
|
||||
|
||||
private ValidationResult ValidateEmailLink(string email, string key)
|
||||
public ValidationResult ValidateEmailLink(string email, string key, EmployeeType employeeType)
|
||||
{
|
||||
var result = _emailValidationKeyProvider.ValidateEmailKey(MakeKey(email), key, ExpirationInterval);
|
||||
var result = _emailValidationKeyProvider.ValidateEmailKey(MakeKey(email, employeeType), key, ExpirationInterval);
|
||||
|
||||
if (result == ValidationResult.Ok)
|
||||
{
|
||||
@ -94,16 +94,16 @@ public class DocSpaceLinkHelper
|
||||
return result;
|
||||
}
|
||||
|
||||
private ValidationResult ValidateExternalLink(string key)
|
||||
public ValidationResult ValidateRoomExternalLink(string key)
|
||||
{
|
||||
var payload = Parse(key);
|
||||
|
||||
if (payload == default)
|
||||
{
|
||||
return ValidationResult.Invalid;
|
||||
}
|
||||
return payload == default ? ValidationResult.Invalid : ValidationResult.Ok;
|
||||
}
|
||||
|
||||
return ValidationResult.Ok;
|
||||
public ValidationResult ValidateExtarnalLink(string key, EmployeeType employeeType)
|
||||
{
|
||||
return _emailValidationKeyProvider.ValidateEmailKey(ConfirmType.LinkInvite.ToStringFast() + (int)employeeType, key);
|
||||
}
|
||||
|
||||
private bool CanUsed(string email, string key, TimeSpan interval)
|
||||
|
@ -110,11 +110,12 @@ public class EmailValidationKeyModelHelper
|
||||
break;
|
||||
|
||||
case ConfirmType.LinkInvite:
|
||||
checkKeyResult = _docSpaceLinkHelper.Validate(key, email);
|
||||
checkKeyResult = string.IsNullOrEmpty(email) ? _docSpaceLinkHelper.ValidateRoomExternalLink(key)
|
||||
: _docSpaceLinkHelper.ValidateEmailLink(email, key, emplType ?? default);
|
||||
|
||||
if (checkKeyResult == ValidationResult.Invalid)
|
||||
{
|
||||
checkKeyResult = _provider.ValidateEmailKey(type.ToString() + (int)emplType, key, _provider.ValidEmailKeyInterval);
|
||||
checkKeyResult = _provider.ValidateEmailKey(type.ToString() + (int)(emplType ?? default), key, _provider.ValidEmailKeyInterval);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -3139,7 +3139,7 @@ public class FileStorageService<T> //: IFileStorageService
|
||||
continue;
|
||||
}
|
||||
|
||||
var link = _roomLinkService.GetInvitationLink(user.Email, _authContext.CurrentAccount.ID);
|
||||
var link = _roomLinkService.GetInvitationLink(user.Email, share.Access, _authContext.CurrentAccount.ID);
|
||||
_studioNotifyService.SendEmailRoomInvite(user.Email, link);
|
||||
}
|
||||
}
|
||||
|
@ -47,26 +47,33 @@ public class RoomLinkService
|
||||
return _commonLinkUtility.GetConfirmationUrl(key, ConfirmType.LinkInvite, createdBy);
|
||||
}
|
||||
|
||||
public string GetInvitationLink(string email, Guid createdBy)
|
||||
public string GetInvitationLink(string email, FileShare share, Guid createdBy)
|
||||
{
|
||||
var link = _commonLinkUtility.GetConfirmationEmailUrl(email, ConfirmType.LinkInvite, EmployeeType.User, createdBy)
|
||||
+ $"&emplType={EmployeeType.User:d}";
|
||||
var type = DocSpaceHelper.PaidRights.Contains(share) ? EmployeeType.User : EmployeeType.Visitor;
|
||||
|
||||
var link = _commonLinkUtility.GetConfirmationEmailUrl(email, ConfirmType.LinkInvite, type, createdBy)
|
||||
+ $"&emplType={type:d}";
|
||||
|
||||
return link;
|
||||
}
|
||||
|
||||
public string GetInvitationLink(string email, EmployeeType employeeType, Guid createdBy)
|
||||
{
|
||||
var link = _commonLinkUtility.GetConfirmationEmailUrl(email, ConfirmType.LinkInvite, employeeType, createdBy)
|
||||
+ $"&emplType={employeeType:d}";
|
||||
|
||||
return link;
|
||||
}
|
||||
|
||||
public async Task<LinkOptions> GetOptionsAsync(string key, string email)
|
||||
{
|
||||
return await GetOptionsAsync(key, email, EmployeeType.All);
|
||||
}
|
||||
|
||||
public async Task<LinkOptions> GetOptionsAsync(string key, string email, EmployeeType employeeType)
|
||||
{
|
||||
var options = new LinkOptions();
|
||||
|
||||
if (string.IsNullOrEmpty(key))
|
||||
{
|
||||
options.Type = LinkType.DefaultInvintation;
|
||||
options.IsCorrect = true;
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
var payload = _docSpaceLinksHelper.Parse(key);
|
||||
|
||||
if (payload != default)
|
||||
@ -76,16 +83,24 @@ public class RoomLinkService
|
||||
if (record != null)
|
||||
{
|
||||
options.IsCorrect = true;
|
||||
options.Type = LinkType.InvintationToRoom;
|
||||
options.LinkType = LinkType.InvintationToRoom;
|
||||
options.RoomId = record.EntryId.ToString();
|
||||
options.Share = record.Share;
|
||||
options.Id = record.Subject;
|
||||
options.EmployeeType = DocSpaceHelper.PaidRights.Contains(record.Share) ? EmployeeType.User : EmployeeType.Visitor;
|
||||
}
|
||||
}
|
||||
else if (_docSpaceLinksHelper.Validate(key, email) == EmailValidationKeyProvider.ValidationResult.Ok)
|
||||
else if (_docSpaceLinksHelper.ValidateEmailLink(email, key, employeeType) == EmailValidationKeyProvider.ValidationResult.Ok)
|
||||
{
|
||||
options.IsCorrect = true;
|
||||
options.Type = LinkType.InvintationByEmail;
|
||||
options.LinkType = LinkType.InvintationByEmail;
|
||||
options.EmployeeType = employeeType;
|
||||
}
|
||||
else if (_docSpaceLinksHelper.ValidateExtarnalLink(key, employeeType) == EmailValidationKeyProvider.ValidationResult.Ok)
|
||||
{
|
||||
options.LinkType = LinkType.DefaultInvintation;
|
||||
options.IsCorrect = true;
|
||||
options.EmployeeType = employeeType;
|
||||
}
|
||||
|
||||
return options;
|
||||
@ -107,7 +122,8 @@ public class LinkOptions
|
||||
public Guid Id { get; set; }
|
||||
public string RoomId { get; set; }
|
||||
public FileShare Share { get; set; }
|
||||
public LinkType Type { get; set; }
|
||||
public LinkType LinkType { get; set; }
|
||||
public EmployeeType EmployeeType { get; set; }
|
||||
public bool IsCorrect { get; set; }
|
||||
}
|
||||
|
||||
|
@ -28,6 +28,8 @@ namespace ASC.Files.Core.Helpers;
|
||||
|
||||
public static class DocSpaceHelper
|
||||
{
|
||||
public static HashSet<FileShare> PaidRights { get; } = new HashSet<FileShare> { FileShare.RoomManager };
|
||||
|
||||
private static readonly HashSet<FileShare> _fillingFormRoomConstraints
|
||||
= new HashSet<FileShare> { FileShare.RoomManager, FileShare.ReadWrite, FileShare.FillForms, FileShare.Read };
|
||||
private static readonly HashSet<FileShare> _editingRoomConstraints
|
||||
|
@ -157,7 +157,7 @@ public class FileSharingAceHelper<T>
|
||||
|
||||
if (!string.IsNullOrEmpty(w.Email))
|
||||
{
|
||||
var link = _roomLinkService.GetInvitationLink(w.Email, _authContext.CurrentAccount.ID);
|
||||
var link = _roomLinkService.GetInvitationLink(w.Email, share, _authContext.CurrentAccount.ID);
|
||||
_studioNotifyService.SendEmailRoomInvite(w.Email, link);
|
||||
_logger.Debug(link);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user