public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            ReturnUrl = returnUrl ?? Url.Content("~/Admin/Index");

            if (ModelState.IsValid)
            {
                var user = new LifeguardUser
                {
                    Name     = Input.Name,
                    UserName = Input.Email,
                    Email    = Input.Email
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    /*
                     * var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                     * code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                     * var callbackUrl = Url.Page(
                     *  "/Account/ConfirmEmail",
                     *  pageHandler: null,
                     *  values: new { area = "Identity", userId = user.Id, code = code },
                     *  protocol: Request.Scheme);
                     *
                     * await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                     *  $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");
                     *
                     * if (_userManager.Options.SignIn.RequireConfirmedAccount)
                     * {
                     *  return RedirectToPage("RegisterConfirmation", new { email = Input.Email });
                     * }
                     * else
                     * {
                     *  await _signInManager.SignInAsync(user, isPersistent: false);
                     *  return LocalRedirect(returnUrl);
                     * }
                     * await _signInManager.SignInAsync(user, isPersistent: false);
                     */

                    return(LocalRedirect(ReturnUrl));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
        private async Task LoadAsync(LifeguardUser user)
        {
            var userName = await _userManager.GetUserNameAsync(user);

            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            Username = userName;

            Input = new InputModel
            {
                Name        = user.Name,
                PhoneNumber = phoneNumber
            };
        }
        public async Task <IActionResult> OnPostAsync(string id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            LifeguardUser user = await _userManager.FindByIdAsync(id); //find user, return notfound if they don't exist

            if (user == null)
            {
                return(NotFound());
            }
            var result = await _userManager.DeleteAsync(user); //delete user

            if (result.Succeeded)
            {
                _logger.LogInformation("User {0} is deleted.", user.UserName);
            }
            return(RedirectToPage("./Index"));
        }
示例#4
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            LifeguardUser user = await _userManager.FindByIdAsync(CurrentStaff.StaffId); //user = current user staffId

            if (user == null)
            {
                return(NotFound());
            }

            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            if (CurrentStaff.PhoneNumber != phoneNumber) //update phone number
            {
                var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, CurrentStaff.PhoneNumber);

                if (!setPhoneResult.Succeeded)
                {
                    throw new InvalidOperationException($"Unexpected error occurred setting phone number for user with ID {user.Id}.");
                }
            }

            if (CurrentStaff.Name != user.Name || CurrentStaff.Email != user.Email) //update email
            {
                user.Name  = CurrentStaff.Name;
                user.Email = CurrentStaff.Email;

                var result = await _userManager.UpdateAsync(user);

                if (result.Succeeded)
                {
                    _logger.LogInformation($"User {user.Name} is updated.");
                }
            }

            var userRoles = await _userManager.GetRolesAsync(user);

            if (userRoles.Count == 0) //update role to admin
            {
                if (CurrentStaff.Role == "Administrators")
                {
                    var result = await _userManager.AddToRoleAsync(user, CurrentStaff.Role);

                    if (result.Succeeded)
                    {
                        _logger.LogInformation("User {0} is set as administrator.", user.Name);
                    }
                }
            }
            else //update role to user
            {
                if (CurrentStaff.Role == "User")
                {
                    var result = await _userManager.RemoveFromRoleAsync(user, userRoles[0]);

                    if (result.Succeeded)
                    {
                        _logger.LogInformation("User {0} is set as user.", user.Name);
                    }
                }
            }

            return(RedirectToPage("./Index"));
        }