public MyTrelloUser Authenticate(string nickName, string password, out MembershipCreateStatus status)
        {
            var userModel = _repo.GetById(nickName);
            if (userModel == null)
            {
                status = MembershipCreateStatus.InvalidUserName;
                return null;
            }

            if(!userModel.IsValid)
            {
                status = MembershipCreateStatus.ProviderError;
                return userModel;
            }

            IGenerator gen = new Generator();
            if (!gen.GenerateHash(password).SequenceEqual(userModel.Password))
            {
                status = MembershipCreateStatus.InvalidPassword;
                return null;
            }

            status = MembershipCreateStatus.Success;
            return userModel;
        }
Exemplo n.º 2
0
        public ActionResult Register(UserRegister user)
        {
            if (RepoUser.VerifyIfExistWithId(user.NickName))
                ModelState.AddModelError("NickName", "MyTrelloUser name already exists.");

            if (ModelState.IsValid)
            {
                IGenerator gen = new Generator();
                var userModel = new MyTrelloUser
                                    {
                                        Id = user.NickName,
                                        Name = user.Name,
                                        Password = gen.GenerateHash(user.Password),
                                        Email = user.Email,
                                        CurrentRole = RoleStatus.User,
                                        IsValid = false,
                                        VerificationToken = gen.GenerateToken(),
                                        ContainsImage = false
                                    };

                RepoUser.Add(userModel);

                try
                {
                    MvcUtils.SendVerificationMail(userModel);
                }
                catch (SmtpFailedRecipientsException exception)
                {
                    ModelState.AddModelError("Email", exception);
                    Response.StatusCode = HttpStatusCodes.BadRequest;
                    RepoUser.Remove(userModel.Id);
                    return View("Error");
                }
                catch(SmtpException)
                {
                    Response.StatusCode = HttpStatusCodes.InternalServerError;
                    RepoUser.Remove(userModel.Id);
                    return View("Error");
                }

                return new SeeOtherResult { Uri = Url.Action("Login", "Users") };
            }
            Response.StatusCode = HttpStatusCodes.BadRequest;
            return View(user);
        }