コード例 #1
0
        public async Task<ActionResult> LogIn(AccountLoginOrRegisterViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return this.View(model);
            }

            var user = await LunchContext.Users.SingleOrDefaultAsync(u => u.EmailAddress == model.Username);

            if (user != null && user.Password == HashHelper.GetHash(model.Password))
            {
                this.LogInInternal(user.EmailAddress);
                return this.Redirect(model.ReturnUrl ?? FormsAuthentication.DefaultUrl);
            }

            ModelState.AddModelError(string.Empty, WebCommon.LoginFailed);

            return this.View("LoginOrRegister", model);
        }
コード例 #2
0
        public async Task<ActionResult> Register(AccountLoginOrRegisterViewModel model)
        {
            var loginTaken = await LunchContext.Users.AnyAsync(u => u.EmailAddress == model.Username);

            if (loginTaken)
            {
                ModelState.AddModelError(string.Empty, WebCommon.LoginAlreadyTaken);
            }
            else
            {
                try
                {
                    var user = LunchContext.Users.Add(new User { EmailAddress = model.Username, PasswordChangeSecret = Guid.NewGuid() });
                    var activationUrl =
                        string.Format(
                            "To activate your lunchdictator account please click <a href='{0}{1}'>here</a>",
                            HttpContext.Request.Url.GetCurrentUrl(),
                            Url.Action("Activate", "Account", new { passwordChangeSecret = user.PasswordChangeSecret }));

                    await EmailSender.SendEmail(model.Username, WebCommon.ActivationEmailSubject, activationUrl);
                    await LunchContext.SaveChangesAsync();

                    model.Message = WebCommon.RegistrationSuccess;
                }
                catch (DbEntityValidationException ex)
                {
                    foreach (var validationError in ex.EntityValidationErrors.Where(v => !v.IsValid))
                    {
                        foreach (var error in validationError.ValidationErrors)
                        {
                            ModelState.AddModelError(string.Empty, error.ErrorMessage);
                        }
                    }
                }
            }

            return this.View("LoginOrRegister", model);
        }