コード例 #1
0
        public async Task <IActionResult> Register(RegisterViewModel reg)
        {
            if (ModelState.IsValid)
            {
                // Check username is not taken
                if (!await AccountDb.IsUsernameTaken(reg.Username, _context))
                {
                    Account acc = new Account()
                    {
                        Email    = reg.Email,
                        FullName = reg.FullName,
                        Password = reg.Password,
                        Username = reg.Username
                    };

                    await AccountDb.Register(_context, acc);

                    SessionHelper.CreateUserSession(acc.AccountId, acc.Username, _http);

                    return(RedirectToAction("Index", "Home"));
                }
                else // If username is taken, add error
                {
                    ModelState.AddModelError(nameof(Account.Username), "Username is already taken");
                }
            }

            return(View(reg));
        }
コード例 #2
0
        public IActionResult Register(Account a)
        {
            if (ModelState.IsValid)
            {
                bool isEmailAndUsernameAvailable = true;
                if (AccountDb.IsEmailTaken(a.Email))
                {
                    isEmailAndUsernameAvailable = false;
                    ModelState.AddModelError(string.Empty, "Email address is taken");
                }

                if (AccountDb.IsUsernameTaken(a.Username))
                {
                    isEmailAndUsernameAvailable = false;
                    ModelState.AddModelError(string.Empty, "Username is taken");
                }

                if (!isEmailAndUsernameAvailable)
                {
                    return(View(a));
                }

                AccountDb.Add(a);
                SessionHelper.LogUserIn(_httpAccessor, a.AccountId, a.Username);
                TempData["Message"] = "You registered sucessfully";
                return(RedirectToAction("Index", "Home"));
            }

            return(View(a));
        }