Esempio n. 1
0
        public async Task <IActionResult> Register(UserForRegistrationDto newUser)
        {
            newUser.Username = newUser.Username.ToLower();

            var            userToCreate    = _mapper.Map <User>(newUser);
            IdentityResult createUsrResult = await _userManager.CreateAsync(userToCreate, newUser.Password);

            if (!createUsrResult.Succeeded)
            {
                return(BadRequest(createUsrResult.Errors));
            }

            IdentityResult addRoleResult = await _userManager.AddToRoleAsync(userToCreate, RoleNames.Member);

            if (!addRoleResult.Succeeded)
            {
                return(BadRequest(addRoleResult.Errors));
            }

            userToCreate = await _authRepo.CreateFirstEnvironment(userToCreate);

            var token = await _userManager.GenerateEmailConfirmationTokenAsync(userToCreate);

            await _mailer.SendConfirmationMail(userToCreate.Id, userToCreate.Email, token, false);

            var userToReturn = _mapper.Map <UserForEditDto>(userToCreate);

            Response.ExposeHeader("location");
            return(CreatedAtRoute(nameof(UsersController.GetUser), new { controller = "Users", id = userToReturn.Id }, userToReturn));
        }
        public async Task <IActionResult> SetEmailAddress(int userId, [FromBody] ProfileChangeDto changesDto)
        {
            if (!this.VerifyUser(userId))
            {
                return(Unauthorized());
            }

            User user = await _repo.GetUser(userId);

            string token = await _userManager.GenerateChangeEmailTokenAsync(user, changesDto.EMail);

            await _mailer.SendConfirmationMail(user.Id, changesDto.EMail, token, true);

            return(Ok());
        }