예제 #1
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                var user = new IWantMyMummyUser {
                    UserName = Input.Email, Email = Input.Email, Firstname = Input.FirstName, LastName = Input.LastName, PhoneNumber = Input.PhoneNumber
                };

                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, returnUrl = returnUrl },
                        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, returnUrl = returnUrl }));
                    }
                    else
                    {
                        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());
        }
예제 #2
0
        private async Task LoadSharedKeyAndQrCodeUriAsync(IWantMyMummyUser user)
        {
            // Load the authenticator key & QR code URI to display on the form
            var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);

            if (string.IsNullOrEmpty(unformattedKey))
            {
                await _userManager.ResetAuthenticatorKeyAsync(user);

                unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);
            }

            SharedKey = FormatKey(unformattedKey);

            var email = await _userManager.GetEmailAsync(user);

            AuthenticatorUri = GenerateQrCodeUri(email, unformattedKey);
        }
예제 #3
0
        public IActionResult EditUser(IWantMyMummyUser user, string roleId)
        {
            if (ModelState.IsValid)
            {
                //context.Users.Update(user);
                //context.SaveChanges();

                var updateUsers = (from use in context.Users
                                   where use.Id == user.Id
                                   select use).FirstOrDefault();

                updateUsers.Firstname   = user.Firstname;
                updateUsers.LastName    = user.LastName;
                updateUsers.Email       = user.Email;
                updateUsers.PhoneNumber = user.PhoneNumber;

                context.SaveChanges();

                var updateRole = (from rol in context.UserRoles
                                  where rol.UserId == user.Id
                                  select rol).FirstOrDefault();

                if (updateRole != null)
                {
                    context.UserRoles.Remove(updateRole);

                    context.SaveChanges();

                    updateRole.RoleId = roleId;
                    context.UserRoles.Add(updateRole);
                }
                else
                {
                    var row = new IdentityUserRole <string>
                    {
                        RoleId = roleId,
                        UserId = user.Id
                    };

                    context.UserRoles.Add(row);
                }



                context.SaveChanges();


                var role = (context.UserRoles
                            .Where(r => r.UserId == userManager.GetUserId(User))
                            .FirstOrDefault());


                if (!(role is null))
                {
                    ViewBag.Role = Int32.Parse(role.RoleId);
                }

                return(RedirectToAction("index", "Admin"));
            }

            return(View("Index", context.Users));
        }