Beispiel #1
0
        protected override Task <AuthenticateResult> HandleAuthenticateAsync()
        {
            var emailValidationKeyModel = EmailValidationKeyModel.FromRequest(Context.Request);

            if (!emailValidationKeyModel.Type.HasValue)
            {
                return(SecurityContext.IsAuthenticated
                    ? Task.FromResult(AuthenticateResult.Success(new AuthenticationTicket(Context.User, new AuthenticationProperties(), Scheme.Name)))
                    : Task.FromResult(AuthenticateResult.Fail(new AuthenticationException(HttpStatusCode.Unauthorized.ToString()))));
            }

            EmailValidationKeyProvider.ValidationResult checkKeyResult;
            try
            {
                checkKeyResult = emailValidationKeyModel.Validate(EmailValidationKeyProvider, AuthContext, TenantManager, UserManager, AuthManager);
            }
            catch (ArgumentNullException)
            {
                checkKeyResult = EmailValidationKeyProvider.ValidationResult.Invalid;
            }

            var claims = new List <Claim>()
            {
                new Claim(ClaimTypes.Role, emailValidationKeyModel.Type.ToString())
            };

            if (checkKeyResult == EmailValidationKeyProvider.ValidationResult.Ok)
            {
                if (!SecurityContext.IsAuthenticated)
                {
                    if (emailValidationKeyModel.UiD.HasValue && !emailValidationKeyModel.UiD.Equals(Guid.Empty))
                    {
                        SecurityContext.AuthenticateMe(emailValidationKeyModel.UiD.Value, claims);
                    }
                    else
                    {
                        SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem, claims);
                    }
                }
                else
                {
                    SecurityContext.AuthenticateMe(SecurityContext.CurrentAccount, claims);
                }
            }

            var result = checkKeyResult switch
            {
                EmailValidationKeyProvider.ValidationResult.Ok => AuthenticateResult.Success(new AuthenticationTicket(Context.User, new AuthenticationProperties(), Scheme.Name)),
                _ => AuthenticateResult.Fail(new AuthenticationException(HttpStatusCode.Unauthorized.ToString()))
            };

            return(Task.FromResult(result));
        }
    }
Beispiel #2
0
 public ValidationResult CheckConfirm([FromBody] EmailValidationKeyModel model)
 {
     return(model.Validate(EmailValidationKeyProvider, AuthContext, TenantManager, UserManager, AuthManager));
 }
 public ValidationResult CheckConfirm([FromBody] EmailValidationKeyModel model)
 {
     return(model.Validate());
 }
 public ValidationResult CheckConfirmFromForm([FromForm] EmailValidationKeyModel model)
 {
     return(EmailValidationKeyModelHelper.Validate(model));
 }