Esempio n. 1
0
        public async Task <IActionResult> UpdateUser(int id, [FromBody] UserSaveResource userResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = await userRepo.GetUser(id, false);

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


            mapper.Map <UserSaveResource, User>(userResource, user);

            await uow.CompleteAsync();

            user = await userRepo.GetUser(user.Id);

            var result = mapper.Map <User, UserSaveResource>(user);

            return(Ok(result));
        }
        public async Task <ActionResult <UserResource> > UpdateUser(int id, [FromBody] UserSaveResource user)
        {
            var validator        = new UserSaveResourceValidator();
            var validationResult = await validator.ValidateAsync(user);

            var requestIsInvalid = id == 0 || !validationResult.IsValid;

            if (requestIsInvalid)
            {
                return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok
            }
            var userToBeUpdate = await _userService.GetById(id);

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

            var mappedUser = _mapper.Map <UserSaveResource, User>(user);

            await _userService.UpdateUser(userToBeUpdate, mappedUser);

            var updatedUser = await _userService.GetById(id);

            var updatedUserResource = _mapper.Map <User, UserResource>(updatedUser);

            return(Ok(updatedUserResource));
        }
Esempio n. 3
0
        public async Task <IActionResult> Register([FromBody] UserSaveResource userSaveResource)
        {
            var response = await _userService.Create(userSaveResource);

            if (!response.Success)
            {
                return(BadRequest(response.Error));
            }

            return(CreatedAtAction(nameof(Register), new { id = response.Result.Id }, response.Result));
        }
Esempio n. 4
0
        public async Task <IActionResult> Update(int id, [FromBody] UserSaveResource userSaveResource)
        {
            var response = await _userService.Update(id, userSaveResource);

            if (!response.Success && response.Error.Status == 404)
            {
                return(NotFound(response.Error));
            }

            if (!response.Success)
            {
                return(BadRequest(response.Error));
            }

            return(Ok(response.Result));
        }
Esempio n. 5
0
        public async Task <UserResponse> Update(int id, UserSaveResource user)
        {
            var userExist = await _userRepository.FindByIdAsync(id);

            if (userExist == null)
            {
                return(new UserResponse(404, "User id not found", "Id", "User not found."));
            }

            if (userExist.Email != user.Email)
            {
                var userExistUsername = await _userRepository.FindByEmail(user.Email);

                // username has changed so check if the new username is already taken
                if (userExistUsername != null)
                {
                    return(new UserResponse(400, "User already exists", "Username", "Email " + user.Email + " is already taken"));
                }
            }

            // update user properties
            userExist.FirstName = user.FirstName;
            userExist.LastName  = user.LastName;
            userExist.Email     = user.Email;

            try
            {
                // update password if it was entered
                if (!string.IsNullOrWhiteSpace(user.Password))
                {
                    byte[] passwordHash, passwordSalt;
                    CreatePasswordHash(user.Password, out passwordHash, out passwordSalt);

                    userExist.PasswordHash = passwordHash;
                    userExist.PasswordSalt = passwordSalt;
                }

                _userRepository.Update(userExist);

                var userResource = _mapper.Map <User, UserResource>(userExist);
                return(new UserResponse(userResource));
            }
            catch (Exception ex)
            {
                return(new UserResponse(400, "Unexpected error", "Error", ex.Message));
            }
        }
Esempio n. 6
0
        public async Task <UserResponse> Create(UserSaveResource userSave)
        {
            // validation
            if (string.IsNullOrWhiteSpace(userSave.Password))
            {
                return(new UserResponse(400, "Password required", "Password", "Password is required."));
            }

            var userExist = await _userRepository.FindByEmail(userSave.Email);

            if (userExist != null)
            {
                return(new UserResponse(400, "User already exists", "Email", "Email " + userSave.Email + " is already taken"));
            }

            try
            {
                byte[] passwordHash;
                byte[] passwordSalt;

                CreatePasswordHash(userSave.Password, out passwordHash, out passwordSalt);

                var user = _mapper.Map <UserSaveResource, User>(userSave);

                user.PasswordHash = passwordHash;
                user.PasswordSalt = passwordSalt;

                await _userRepository.AddAsync(user);

                var userResource = _mapper.Map <User, UserResource>(user);

                return(new UserResponse(userResource));
            }
            catch (ArgumentNullException ex)
            {
                return(new UserResponse(400, "Invalid password", "Password", ex.Message));
            }
            catch (ArgumentException ex)
            {
                return(new UserResponse(400, "Invalid password", "Password", ex.Message));
            }
            catch (Exception ex)
            {
                return(new UserResponse(400, "Unexpected error", "Error", ex.Message));
            }
        }
        public async Task <IActionResult> Register([FromBody] UserSaveResource user)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (await _authRepo.UserExist(user.Email))
            {
                return(BadRequest("Email is already registered!"));
            }

            user.Deactive = true;
            var userToCreate = _mapper.Map <UserSaveResource, User>(user);

            await _authRepo.Register(userToCreate, user.Password);

            await _uow.CompleteAsync();

            return(StatusCode(201));
        }
        public IActionResult Login([FromBody] UserSaveResource userAccount)
        {
            var userFromDb = userManager.FindByEmailAsync(userAccount.Email).Result;
            var result     = signInManager.CheckPasswordSignInAsync(userFromDb, userAccount.Password, false).Result;


            if (result.Succeeded)
            {
                var tokenString = GenerateJSONWebToken(userFromDb);
                return(Ok(new
                {
                    userFromDb.Id,
                    userFromDb.Email,
                    userFromDb.UserName,
                    Roles = userManager.GetRolesAsync(userFromDb).Result,
                    tokenString
                }));
            }

            return(Unauthorized());
        }
        public IActionResult RegisterUser([FromBody] UserSaveResource userAccount)
        {
            var user = new User()
            {
                Email    = userAccount.Email,
                UserName = userAccount.UserName
            };

            userManager.CreateAsync(user, userAccount.Password).Wait();

            var registeredUser = userManager.FindByNameAsync(user.UserName).Result;

            userManager.AddToRoleAsync(registeredUser, Policies.Moderator).Wait();
            return(Ok(new
            {
                registeredUser.Id,
                registeredUser.Email,
                registeredUser.UserName,
                Roles = userManager.GetRolesAsync(registeredUser).Result,
            }));
        }
        public async Task <ActionResult <UserResource> > CreateUser([FromBody] UserSaveResource user)
        {
            var validator        = new UserSaveResourceValidator();
            var validationResult = await validator.ValidateAsync(user);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok
            }
            var userToCreate = _mapper.Map <UserSaveResource, User>(user);

            userToCreate.Statistics = new Statistics()
            {
                NumberOfGamesPlayed = 0, SuccesfullGames = 0, TimeInGames = 0
            };

            var newUser = await _userService.CreateUser(userToCreate);

            var createdUser = await _userService.GetById(newUser.Id);

            var userResource = _mapper.Map <User, UserResource>(createdUser);

            return(Ok(userResource));
        }