public async Task <ActionResult> ActivateUser(string token)
        {
            if (string.IsNullOrWhiteSpace(token))
            {
                return(RedirectToHome());
            }

            var userConfirmationToken = urlSafeSecureDataSerializer
                                        .Deserialize <UserConfirmationToken>(token);

            if (await membershipService.Activate(
                    userConfirmationToken.Email,
                    userConfirmationToken.Token))
            {
                await newUserConfirmedHandler.Handle(userConfirmationToken.Email);

                Flash[FlashMessageType.Success] = "Your account is now " +
                                                  "successfully verified.";
            }
            else
            {
                Flash[FlashMessageType.Error] = "Invalid confirmation " +
                                                "token, you may have miss typed the token or the " +
                                                "token has expired.";
            }

            return(RedirectToHome());
        }
Esempio n. 2
0
        public async Task <HttpResponseMessage> Post(CreateUser model)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(
                           HttpStatusCode.BadRequest, ModelState));
            }

            var email = model.Email.ToLower(CultureInfo.CurrentCulture);
            var requiresActivation = !IsDebuggingEnabled;

            try
            {
                var token = await membershipService.Signup(
                    email,
                    model.Password,
                    UserRoles.User,
                    requiresActivation);

                if (requiresActivation)
                {
                    var userConfirmationToken = new UserConfirmationToken
                    {
                        Email = email,
                        Token = token
                    };

                    var securedToken = urlSafeSecureDataSerializer.Serialize(
                        userConfirmationToken);

                    await mailer.UserConfirmationAsync(email, securedToken);
                }
                else
                {
                    await newUserConfirmedHandler.Handle(email);
                }

                return(Request.CreateResponse(HttpStatusCode.NoContent));
            }
            catch (IdentityException e)
            {
                ModelState.AddModelError(string.Empty, e);

                return(Request.CreateErrorResponse(
                           HttpStatusCode.BadRequest, ModelState));
            }
        }