Example #1
0
        public async Task <IActionResult> CreateClient([FromBody] UserToSignUpDTO userResource)
        {
            var user = _mapper.Map <User> (userResource);

            user.Role          = Role.Client;
            user.EmailVerified = false;
            if (await _userRepository.UserExists(user))
            {
                return(BadRequest("User already exists"));
            }
            try {
                var userCreated = await _userRepository.CreateUser(user, userResource.Password);

                if (userCreated.Email == user.Email)
                {
                    StringValues origin;
                    var          token = _userRepository.CreateToken(user);
                    Request.Headers.TryGetValue("Origin", out origin);
                    Message message = new Message();
                    message.Subject      = "Account Confirmation";
                    message.FromEmail    = "*****@*****.**";
                    message.FromName     = "234Spaces Admin";
                    message.ToName       = user.Name;
                    message.ToEmail      = user.Email;
                    message.PlainContent = null;
                    message.HtmlContent  = FormattedEmailBody("Account Confirmation", $"Please confirm that {user.Email} is your email address by clicking on the button below", $"{origin.ToString()}/confirm-email?token={token}", "Confirm Account", true);
                    _userRepository.EmailSender(message);
                }
                return(Ok());
            } catch (Exception ex) {
                return(BadRequest(ex.Message));
            }
        }
Example #2
0
        public async Task <IActionResult> ResendVerificationEmail([FromBody] UserToSignUpDTO userToSignUpDTO)
        {
            var userToVerifyEmail = _mapper.Map <User>(userToSignUpDTO);

            if (await _userRepository.UserExists(userToVerifyEmail))
            {
                var user = await _userRepository.GetUser(userToVerifyEmail.Email);

                if (user == null)
                {
                    return(NotFound("Specified user doesn't exist"));
                }
                StringValues origin;
                var          token = _userRepository.CreateToken(user);
                Request.Headers.TryGetValue("Referer", out origin);
                Message message = new Message();
                message.Subject      = "Account Confirmation";
                message.FromEmail    = "*****@*****.**";
                message.FromName     = "234Spaces Admin";
                message.ToName       = user.Name;
                message.ToEmail      = user.Email;
                message.PlainContent = null;
                message.HtmlContent  = FormattedEmailBody("Account Confirmation", $"Please confirm that {user.Email} is your email address by clicking on the button below", $"{origin.ToString()}/confirm-email?token={token}", "Confirm Account", true);
                _userRepository.EmailSender(message);
                return(Ok());
            }
            return(BadRequest("An unexpected error occured"));
        }
Example #3
0
        public async Task <IActionResult> VerifyUser([FromBody] UserToSignUpDTO userToSignUpDTO)
        {
            var userToVerifyEmail = _mapper.Map <User>(userToSignUpDTO);

            if (userToVerifyEmail == null)
            {
                return(BadRequest("User cannot be null"));
            }
            if (await _userRepository.UserExists(userToVerifyEmail) == false)
            {
                return(BadRequest("User does not exist"));
            }
            userToVerifyEmail.EmailVerified = true;
            _userRepository.UpdateUserStatus(userToVerifyEmail);
            return(Ok());
        }
        public async Task <IActionResult> SignUp(UserToSignUpDTO model)
        {
            ApplicationUser newUser = new ApplicationUser
            {
                Id          = Guid.NewGuid().ToString(),
                UserName    = model.Email,
                Email       = model.Email,
                LastName    = model.LastName,
                FirstName   = model.FirstName,
                PhoneNumber = model.PhoneNumber
            };

            var result = await _userManager.CreateAsync(newUser, model.Password);

            if (result.Succeeded)
            {
                await _userManager.AddToRoleAsync(newUser, model.Role);

                if (model.Role != "Admin")
                {
                    UserMainCurrencyDetail mainCurrency;
                    try
                    {
                        mainCurrency = new UserMainCurrencyDetail
                        {
                            ApplicationUserId = newUser.Id,
                            MainCurrency      = model.MainCurrency
                        };

                        await _userMainCurrencyRepository.AddMainCurrency(mainCurrency);
                    }
                    catch (Exception e)
                    {
                        await _userManager.DeleteAsync(newUser);

                        _logger.LogError(e.Message);
                        return(BadRequest(ResponseMessage.Message("Bad request", errors: new { message = "Failed to add main currency" })));
                    }

                    try
                    {
                        Wallet wallet = new Wallet
                        {
                            WalletId          = Guid.NewGuid().ToString(),
                            ApplicationUserId = newUser.Id,
                            WalletCurrency    = model.MainCurrency
                        };

                        await _walletRepository.AddWallet(wallet);
                    }
                    catch (Exception e)
                    {
                        await _userManager.DeleteAsync(newUser);

                        await _userMainCurrencyRepository.DeleteMainCurrency(mainCurrency);

                        _logger.LogError(e.Message);
                        return(BadRequest(ResponseMessage.Message("Bad request", errors: new { message = "Failed to add wallet" })));
                    }
                }
            }
            else
            {
                foreach (var err in result.Errors)
                {
                    ModelState.AddModelError("", err.Description);
                }
                return(BadRequest(ResponseMessage.Message("Bad request", errors: new { message = ModelState })));
            }

            return(Ok(ResponseMessage.Message("Success! User created", data: new { newUser.Id })));
        }