Exemplo n.º 1
0
        public IActionResult Post([FromBody] MHUser mhuser)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var existingUser = from g in _context.MHUser
                               where g.Username == mhuser.Username
                               select g;

            if (existingUser.Count <MHUser>() > 0)
            {
                return(new StatusCodeResult(StatusCodes.Status409Conflict));
            }

            _context.MHUser.Add(mhuser);
            try
            {
                _context.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (MHUserExists(mhuser.MHUserId))
                {
                    return(new StatusCodeResult(StatusCodes.Status409Conflict));
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("GetMHUser", new { id = mhuser.MHUserId }, mhuser));
        }
Exemplo n.º 2
0
        public IActionResult Put(int id, [FromBody] MHUser mhuser)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != mhuser.MHUserId)
            {
                return(BadRequest());
            }

            _context.Entry(mhuser).State = EntityState.Modified;

            try
            {
                _context.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MHUserExists(mhuser.MHUserId))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(new StatusCodeResult(StatusCodes.Status204NoContent));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var user = new MHUser
                {
                    UserName = model.Email,
                    Email    = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");
                    var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var conformationLink = Url.Action("VerifyEmail", "Account",
                                                      new { userId = user.Id, token = token }, Request.Scheme);

                    var link = HtmlEncoder.Default.Encode(conformationLink);

                    await _emailSender.SendEmailAsync(model.Email, "Verify your email",
                                                      $"Please confirm your account by <a href='{link}'>clicking here</a>.");

                    await _signInManager.SignInAsync(user, isPersistent : false);
                }
            }

            return(View(model));
        }
Exemplo n.º 4
0
        public bool CreateUser(string email, string password, string roleName)
        {
            var user = new MHUser
            {
                Email = email.ToLower(),
            };



            return(true);
        }
Exemplo n.º 5
0
        public IActionResult Get(int id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            MHUser mhuser = _context.MHUser.Single(m => m.MHUserId == id);

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

            return(Ok(mhuser));
        }
        private async Task LoadSharedKeyAndQrCodeUriAsync(MHUser 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);
        }
Exemplo n.º 7
0
        private async Task CreateRoles(IServiceProvider serviceProvider)
        {
            //initializing custom roles
            var RoleManager = serviceProvider.GetRequiredService <RoleManager <IdentityRole> >();
            var UserManager = serviceProvider.GetRequiredService <UserManager <MHUser> >();

            string[]       roleNames = { "Admin", "Store-Manager", "Member" };
            IdentityResult roleResult;

            foreach (var roleName in roleNames)
            {
                var roleExist = await RoleManager.RoleExistsAsync(roleName);

                // ensure that the role does not exist
                if (!roleExist)
                {
                    //create the roles and seed them to the database:
                    roleResult = await RoleManager.CreateAsync(new IdentityRole(roleName));
                }
            }

            // find the user with the admin email
            var _user = await UserManager.FindByEmailAsync("*****@*****.**");

            // check if the user exists
            if (_user == null)
            {
                //Here you could create the super admin who will maintain the web app
                var poweruser = new MHUser()
                {
                    UserName = "******",
                    Email    = "*****@*****.**",
                };
                string adminPassword = "******";

                var createPowerUser = await UserManager.CreateAsync(poweruser, adminPassword);

                if (createPowerUser.Succeeded)
                {
                    //here we tie the new user to the role
                    await UserManager.AddToRoleAsync(poweruser, "Admin");
                }
            }
        }
Exemplo n.º 8
0
        public IActionResult Delete(int id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            MHUser mhuser = _context.MHUser.Single(m => m.MHUserId == id);

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

            _context.MHUser.Remove(mhuser);
            _context.SaveChanges();

            return(Ok(mhuser));
        }
Exemplo n.º 9
0
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

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

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            LoginProvider = info.LoginProvider;
            ReturnUrl     = returnUrl;
            return(Page());
        }
Exemplo n.º 10
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl ??= Url.Content("~/");
            if (!ModelState.IsValid)
            {
                return(Page());
            }
            var user = new MHUser {
                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 token = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                var callbackUrl = Url.Page(
                    "/Account/ConfirmEmail",
                    pageHandler: null,
                    values: new { userId = user.Id, code = token },
                    protocol: Request.Scheme);

                //var link = HtmlEncoder.Default.Encode(callbackUrl);

                await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                  $"{callbackUrl}");

                //await _signInManager.SignInAsync(user, isPersistent: false);
                return(LocalRedirect(returnUrl));
            }
            foreach (var error in result.Errors)
            {
                ModelState.AddModelError(string.Empty, error.Description);
            }


            return(Page());
        }
Exemplo n.º 11
0
        private async Task <bool> IsAdmin(MHUser user)
        {
            var roles = await GetUserRoles(user);

            return(roles.Any(s => s == "Admin"));
        }
Exemplo n.º 12
0
 private async Task <IList <string> > GetUserRoles(MHUser user)
 {
     return(await _manager.GetRolesAsync(user));
 }