Exemplo n.º 1
0
        public async Task <ActionResult> Delete([FromBody] UserVM userVM)
        {
            var username = User.Claims.FirstOrDefault(x => x.Type == "FullName").Value;

            User user = await userManager.FindByIdAsync(userVM.Id);

            if (user != null)
            {
                var basket = await DB.Baskets.Include(x => x.Catalogs).FirstOrDefaultAsync(x => x.UserId == user.Id);

                var role = await userManager.GetRolesAsync(user);

                if (role[0] == "Level one")
                {
                    throw new Exception("You cant delete global admin");
                }
                if (basket.Catalogs.Count == 0)
                {
                    IdentityResult result = await userManager.DeleteAsync(user);
                }
                else
                {
                    throw new Exception("User basket is not empty");
                }
            }
            await SimpleLogTableService.AddAdminLog($"Nodzesa darbnieku: {user.FullName}", username);

            return(Ok());
        }
Exemplo n.º 2
0
        public async Task <ActionResult> RegisterUser([FromBody] RegisterVM newUser)
        {
            var whoCreated = User.Claims.FirstOrDefault(x => x.Type == "FullName").Value;
            var creator    = await DB.Users.FirstOrDefaultAsync(x => x.FullName == whoCreated);

            if (ModelState.IsValid)
            {
                User user = new User {
                    Email = newUser.Email, FullName = newUser.FullName, UserName = newUser.Email, WhoCreated = whoCreated, ReportsTo = creator.Id
                };
                if (newUser.RoleName != "Level four")
                {
                    user.HasAbilityToLoad = true;
                }

                // Adding new user
                var addedUser = await userManager.CreateAsync(user, newUser.Password);

                if (addedUser.Succeeded)
                {
                    await userManager.AddToRoleAsync(user, newUser.RoleName);

                    await signInManager.SignInAsync(user, false);

                    Basket newBasket = new Basket()
                    {
                        UserId = user.Id
                    };
                    DB.Baskets.Add(newBasket);
                    await DB.SaveChangesAsync();
                }
                else
                {
                    throw new Exception("Something went wrong");
                }
            }
            await SimpleLogTableService.AddAdminLog($"Reģistrēja jauno darbnieku: { newUser.FullName}", whoCreated);

            return(Ok(newUser));
        }
Exemplo n.º 3
0
        public async Task <ActionResult> ChangePassword(ChangePasswordViewModel model)
        {
            var username = User.Claims.FirstOrDefault(x => x.Type == "FullName").Value;

            if (ModelState.IsValid)
            {
                User user = await userManager.FindByIdAsync(model.Id);

                if (user != null)
                {
                    var _passwordValidator =
                        HttpContext.RequestServices.GetService(typeof(IPasswordValidator <User>)) as IPasswordValidator <User>;
                    var _passwordHasher =
                        HttpContext.RequestServices.GetService(typeof(IPasswordHasher <User>)) as IPasswordHasher <User>;

                    IdentityResult result =
                        await _passwordValidator.ValidateAsync(userManager, user, model.NewPassword);

                    if (result.Succeeded)
                    {
                        user.PasswordHash = _passwordHasher.HashPassword(user, model.NewPassword);
                        await userManager.UpdateAsync(user);

                        await SimpleLogTableService.AddAdminLog($"Izmainīja parole darbniekam: {user.FullName}", username);
                    }
                    else
                    {
                        return(BadRequest());
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Пользователь не найден");
                }
            }

            return(Ok(model));
        }