コード例 #1
0
        public IHttpResponse Register(DoRegisterViewModel model)
        {
            // Validate
            if (string.IsNullOrWhiteSpace(model.Username) || model.Username.Trim().Length < 4)
            {
                return(this.BadRequestError("Please provide valid username with length of 4 or more characters."));
            }

            if (this.Db.Users.Any(x => x.Username == model.Username.Trim()))
            {
                return(this.BadRequestError("User with the same name already exists."));
            }

            if (string.IsNullOrWhiteSpace(model.Password) || model.Password.Length < 6)
            {
                return(this.BadRequestError("Please provide password of length 6 or more."));
            }

            if (model.Password != model.ConfirmPassword)
            {
                return(this.BadRequestError("Passwords do not match."));
            }

            // Hash password
            var hashedPassword = this.hashService.Hash(model.Password);

            // Create user
            var user = new User
            {
                Username = model.Username.Trim(),
                Password = hashedPassword,
                FullName = model.FullName,
                Email    = model.Email,
            };

            if (!this.Db.Users.Any())
            {
                user.Role = UserRole.Admin;
            }

            this.Db.Users.Add(user);

            try
            {
                this.Db.SaveChanges();
            }
            catch (Exception e)
            {
                // TODO: Log error
                return(this.ServerError(e.Message));
            }

            // Redirect
            return(this.Redirect("/users/login"));
        }
コード例 #2
0
        public async Task <IActionResult> Register(DoRegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = mapper.Map <EventuresUser>(model);
                await this.userManager.CreateAsync(user, model.Password);

                await this.userManager.AddToRoleAsync(user, "User");

                return(RedirectToAction("Login", "Users"));
            }
            ;


            return(View(model));
        }
コード例 #3
0
        public HttpResponse Register(DoRegisterViewModel model)
        {
            if (IsUserSignIn())
            {
                return(Redirect("/"));
            }

            if (model.Username == null || model.Username.Length < 5 || model.Username.Length > 20)
            {
                return(Error("Invalid username. The username should be between 5 and 20 characters."));
            }

            if (!Regex.IsMatch(model.Username, @"^[a-zA-Z0-9\.]+$"))
            {
                return(Error("Invalid username. Only aphanumeric character are allowed."));
            }

            if (string.IsNullOrWhiteSpace(model.Email) || !new EmailAddressAttribute().IsValid(model.Email))
            {
                return(Error("Invalid email."));
            }

            if (model.Password == null || model.Password.Length < 6 || model.Password.Length > 20)
            {
                return(Error("Invalid password. The password should be between 6 and 20 characters."));
            }

            if (model.Password != model.ConfirmPassword)
            {
                return(Error("Passwords does not match."));
            }

            if (!usersService.IsUsernameAvaible(model.Username))
            {
                return(Error("Username already taken."));
            }

            if (!usersService.IsEmailAvaible(model.Email))
            {
                return(Error("Email already taken."));
            }

            usersService.CreateUser(model.Username, model.Email, model.Password);

            return(Redirect("/Users/Login"));
        }
コード例 #4
0
        public IHttpResponse PostRegister(DoRegisterViewModel model)
        {
            Regex usernameAndPasswordRegex = new Regex(@"^\w+$");
            Regex emailRegex = new Regex(@"^[A-z]+\@[A-z]+\.[A-z]{1,4}$");

            string hashedPassword        = this.hashService.Compute256Hash(model.Password);
            string hashedConfirmPassword = this.hashService.Compute256Hash(model.Password);

            model.Email = StringExtensions.UrlDecode(model.Email);

            if (emailRegex.Match(model.Email).Success == false ||
                usernameAndPasswordRegex.Match(model.Password).Success == false ||
                model.Password.Length < 3 ||
                model.Password.Length > 50 ||
                (usernameAndPasswordRegex.Match(model.Username).Success == false ||
                 model.Username.Length < 3 ||
                 model.Username.Length > 30))
            {
                GetRegisterViewModel viewModel = new GetRegisterViewModel()
                {
                    ErrorMessage = InvalidRegisterInformationMessage
                };

                return(this.View("Register", HttpResponseStatusCode.BadRequest, viewModel));
            }
            if (this.Context.Users.Any(user => user.Email == model.Email))
            {
                GetRegisterViewModel viewModel = new GetRegisterViewModel()
                {
                    ErrorMessage = EmailAlreadyExistsErrorMessage
                };

                return(this.View("Register", HttpResponseStatusCode.BadRequest, viewModel));
            }
            if (hashedConfirmPassword == hashedPassword)
            {
                //Adding user to db
                User user = new User
                {
                    Id       = Guid.NewGuid().ToString(),
                    Username = model.Username,
                    Password = hashedPassword,
                    Email    = model.Email
                };

                using (this.Context)
                {
                    if (this.Context.Users.Any(u => u.Username == model.Username) == true)
                    {
                        GetRegisterViewModel viewModel = new GetRegisterViewModel()
                        {
                            ErrorMessage = UsernameAlreadyExistsErrorMessage
                        };

                        return(this.View("Register", HttpResponseStatusCode.BadRequest, viewModel));
                    }

                    this.Context.Users.Add(user);
                    this.Context.SaveChanges();
                }
            }

            //Adding cookie
            HttpCookie cookie = new HttpCookie(AuthenticationCookieKey, this.UserCookieService.EncryptString(model.Username, EncryptKey));

            this.Request.Cookies.Add(cookie);
            this.Response.Cookies.Add(cookie);

            return(this.View("Logged", HttpResponseStatusCode.Ok, model));
        }