public async Task <UserRegisterResponseModel> RegisterUser(UserRegisterRequestModel userRegisterRequestModel)
        {
            var dbUser = await _userRepository.GetUserByEmail(userRegisterRequestModel.Email);

            if (dbUser != null)
            {
                throw new ConflictException("User Already exists, please try to login");
            }

            var user = new User
            {
                Email    = userRegisterRequestModel.Email,
                Password = userRegisterRequestModel.Password,
                FullName = userRegisterRequestModel.FullName,
                JoinedOn = userRegisterRequestModel.JoinedOn
            };
            var createdUser = await _userRepository.AddAsync(user);

            var response = new UserRegisterResponseModel
            {
                Id       = user.Id,
                Email    = user.Email,
                Password = user.Password,
                FullName = user.FullName,
            };

            return(response);
        }
Beispiel #2
0
        public async Task <UserRegisterResponseModel> RegisterUser(UserRegisterRequestModel registerRequestModel)
        {
            // first check whether email exists in database
            var dbUser = await _userRepository.GetUserByEmail(registerRequestModel.Email);


            // user exists in database
            if (dbUser != null)
            {
                //try
                //{


                //}
                //catch (Exception ex)
                //{


                //ex.Data.Add("Id", dbUser.Id);
                //ex.Data.Add("Email", dbUser.Email);
                //ex.Data.Add("FullName", dbUser.FirstName + dbUser.LastName);

                //throw new ConflictException("user already exists, please login");


                throw new ConflictException("user already exists, please login");
                throw new Exception("user already exists, please login");

                //}
            }

            //if user doesn't exist in database
            var salt           = CreateSalt();
            var hashedPassword = HashPassword(registerRequestModel.Password, salt);


            var user = new User
            {
                FirstName      = registerRequestModel.FirstName,
                LastName       = registerRequestModel.LastName,
                Email          = registerRequestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                DateOfBirth    = registerRequestModel.DateOfBirth
            };


            var createdUser = await _userRepository.AddAsync(user);

            var createdUserResponseModel = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };


            return(createdUserResponseModel);
        }
        public async Task <UserRegisterResponseModel> CreateUser(UserRegisterRequestModel reqeust)
        {
            var dbUser = await _userRepository.GetUserByEmail(reqeust.Email);

            if (dbUser != null)
            {
                throw new Exception("Email already exists");
            }
            var salt       = _cryptoService.GetSalt();
            var hashingpsw = _cryptoService.HashingPassword(reqeust.Password, salt);
            var user       = new User
            {
                Email          = reqeust.Email,
                FirstName      = reqeust.FirstName,
                LastName       = reqeust.LastName,
                Salt           = salt,
                HashedPassword = hashingpsw
            };
            var createdUser = await _userRepository.AddAsync(user);

            var response = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName,
                Email     = createdUser.Email
            };

            return(response);
        }
Beispiel #4
0
        public async Task <UserRegisterResponseModel> CreateUser(UserRegisterRequestModel requestModel)
        {
            var dbUser = await _userRepository.GetUserByEmail(requestModel.Email);

            if (dbUser != null && string.Equals(dbUser.Email, requestModel.Email, StringComparison.CurrentCultureIgnoreCase))
            {
                throw new Exception("Email Already Exits");
            }

            var salt           = _encryptionService.CreateSalt();
            var hashedPassword = _encryptionService.HashPassword(requestModel.Password, salt);
            var user           = new User
            {
                Email          = requestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                FirstName      = requestModel.FirstName,
                LastName       = requestModel.LastName
            };
            var createdUser = await _userRepository.AddAsync(user);

            var response = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(response);
        }
Beispiel #5
0
        public async Task <UserRegisterResponseModel> CreateUser(UserRegisterRequestModel requestModel)
        {
            //make sure email not in db
            //we need to send email to our User Repo and see if the data exists for the email
            var dbUser = await _userRepository.GetUserByEmail(requestModel.Email);

            if (dbUser != null && string.Equals(dbUser.Email, requestModel.Email, StringComparison.CurrentCultureIgnoreCase))
            {
                throw new Exception("Email Already Exits");
            }

            //first step is to create a random salt
            var salt           = _encryptionService.CreateSalt();
            var hashedPassword = _encryptionService.HashPassword(requestModel.Password, salt);
            var user           = new User
            {
                Email          = requestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                FirstName      = requestModel.FirstName,
                LastName       = requestModel.LastName
            };
            var createdUser = await _userRepository.AddAsync(user);

            var response = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(response);
        }
        public async Task <UserRegisterResponseModel> RegisterUser(UserRegisterRequestModel registerRequest)
        {
            //first check if user registered
            var dbuser = await _userRepository.GetUserByEmail(registerRequest.Email);

            if (dbuser != null)
            {
                throw new Exception("User Already exist");
            }

            // then create User Object and save it to database with UserRepository

            var user = new Users()
            {
                Fullname = registerRequest.FullName,
                Email    = registerRequest.Email,
                Password = registerRequest.Password,
                JoinedOn = registerRequest.JoinedOn
            };

            // call repository to save User info that included salt and hashed password
            var createdUser = await _userRepository.AddAsync(user);

            // map user object to UserRegisterResponseModel object
            var createdUserResponse = new UserRegisterResponseModel
            {
                Id       = createdUser.Id,
                Email    = createdUser.Email,
                FullName = createdUser.Fullname
            };

            return(createdUserResponse);
        }
Beispiel #7
0
        public async Task <UserRegisterResponseModel> CreateUser(UserRegisterRequestModel requestModel)
        {
            var dbUser = await _userRepository.GetUserByEmail(requestModel.Email);//make sure the user exist or not

            if (dbUser != null &&
                string.Equals(dbUser.Email, requestModel.Email, StringComparison.CurrentCultureIgnoreCase))
            {
                throw new ConflictException("Email Already Exits");  //if user already exist, cannot create user ccount
            }
            var salt           = _encryptionService.CreateSalt();
            var hashedPassword = _encryptionService.HashPassword(requestModel.Password, salt);
            var user           = new User
            {
                Email          = requestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                FirstName      = requestModel.FirstName,
                LastName       = requestModel.LastName
            };                                                      //create new user information
            var createdUser = await _userRepository.AddAsync(user); //add those information to DB

            var response = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(response);
        }//manully mapping
Beispiel #8
0
        public UserRegisterResponseModel registerEmployee(RegisterEmployeeRequestModel employeeRegisterModel, out ErrorModel errorModel)
        {
            errorModel = null;
            UserRegisterResponseModel userRegisterResponse = null;
            SqlConnection             connection           = null;

            try
            {
                using (connection = new SqlConnection(Database.getConnectionString()))
                {
                    SqlCommand command = new SqlCommand(SqlCommands.SP_registerEmployee, connection);
                    command.CommandType = System.Data.CommandType.StoredProcedure;

                    #region Commands Parameters
                    command.Parameters.AddWithValue("email", employeeRegisterModel.email);
                    command.Parameters.AddWithValue("password", employeeRegisterModel.email);
                    command.Parameters.AddWithValue("fname", employeeRegisterModel.firstName);
                    command.Parameters.AddWithValue("lname", employeeRegisterModel.lastName);
                    command.Parameters.AddWithValue("phone", employeeRegisterModel.phone);
                    command.Parameters.AddWithValue("userTypeId", employeeRegisterModel.userType);
                    command.Parameters.AddWithValue("gender", employeeRegisterModel.gender);

                    #endregion
                    connection.Open();
                    SqlDataReader reader = command.ExecuteReader();

                    userRegisterResponse = new UserRegisterResponseModel();
                    if (reader.Read())
                    {
                        if (reader.isColumnExists("ErrorCode"))
                        {
                            errorModel              = new ErrorModel();
                            errorModel.ErrorCode    = reader["ErrorCode"].ToString();
                            errorModel.ErrorMessage = reader["ErrorMessage"].ToString();
                        }
                        else
                        {
                            userRegisterResponse.Email  = reader["email"].ToString();
                            userRegisterResponse.UserId = reader["userId"].ToString();
                        }
                    }
                    command.Dispose();
                    return(userRegisterResponse);
                }
            }
            catch (Exception exception)
            {
                errorModel = new ErrorModel();
                errorModel.ErrorMessage = exception.Message;
                return(null);
            }
            finally
            {
                if (connection != null)
                {
                    connection.Close();
                }
            }
        }
Beispiel #9
0
        public async Task <UserRegisterResponseModel> GetUserDetails(int id)
        {
            var user = await _userRepository.GetByIdAsync(id);

            var details = new UserRegisterResponseModel();

            PropertyCopy.Copy(details, user);
            return(details);
        }
Beispiel #10
0
        public async Task <UserRegisterResponseModel> RegisterUser(UserRegisterRequestModel registerRequestModel)
        {
            // first check whether email exists in database
            var dbUser = await _userRepository.GetUserByEmail(registerRequestModel.Email);



            // user exists in database
            if (dbUser != null)
            {
                throw new ConflictException("user already exists, please login");
                //throw new Exception("user already exists, please login");
            }


            // continue with our hashing
            // create a salt and add salt to the user entered password and create user object and save it to db
            //Generate Salt
            var salt = CreateSalt();

            //var saltExistsDb = await _userRepository.SaltExists(salt);

            //if (!saltExistsDb)
            //{
            //    //continue
            //}

            //Hash password
            var hashedPassword = HashPassword(registerRequestModel.Password, salt);
            //Save user Entity in DB
            var user = new User
            {
                FirstName      = registerRequestModel.FirstName,
                LastName       = registerRequestModel.LastName,
                Email          = registerRequestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                DateOfBirth    = registerRequestModel.DateOfBirth
            };

            var createdUser = await _userRepository.AddAsync(user);

            var createdUserResponseModel = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(createdUserResponseModel);
        }
Beispiel #11
0
        public async Task <UserRegisterResponseModel> GetUserDetails(int id)
        {
            var user = await _userRepository.GetByIdAsync(id);

            var model = new UserRegisterResponseModel {
                Id        = user.Id,
                Email     = user.Email,
                FirstName = user.FirstName,
                LastName  = user.LastName
            };

            return(model);
        }
 public UserRegisterResponseModel register(UserRegisterRequestModel userRegister, out ErrorModel errorModel)
 {
     errorModel = null;
     try
     {
         User userProvider = new User();
         UserRegisterResponseModel userRegisterResponse = userProvider.register(userRegister.Email, userRegister.Password, userRegister.FirstName, userRegister.lastName, userRegister.Phone, userRegister.UserType, out errorModel);
         return(userRegisterResponse);
     }
     catch (Exception e)
     {
         return(null);
     }
 }
Beispiel #13
0
        private UserRegisterResponseModel UserToUserRegResponse(User user)
        {
            if (user == null)
            {
                return(null);
            }
            var userRegiResponseModel = new UserRegisterResponseModel();

            userRegiResponseModel.Id        = user.Id;
            userRegiResponseModel.Email     = user.Email;
            userRegiResponseModel.FirstName = user.FirstName;
            userRegiResponseModel.LastName  = user.LastName;
            return(userRegiResponseModel);
        }
Beispiel #14
0
        public async Task <UserRegisterResponseModel> GetUserProfile(string email)
        {
            var dbuser = await _userRepository.GetUserByEmail(email);

            if (dbuser == null)
            {
                return(null);
            }
            var user = new UserRegisterResponseModel {
                Id = dbuser.Id, Email = dbuser.Email, FirstName = dbuser.FirstName, LastName = dbuser.LastName
            };

            return(user);
        }
        public async Task <UserRegisterResponseModel> Register(UserRegisterRequestModel newPlayer)
        {
            UserRegisterResponseModel returnValue = new UserRegisterResponseModel {
                IsSuccess = true, PlayerId = -1
            };

            if (_context.PlayerIdentity.AnyAsync(t => t.Login == newPlayer.Login || t.Nick == newPlayer.NickName || t.Email == newPlayer.Email).Result)
            {
                returnValue.IsSuccess  = false;
                returnValue.StatusCode = 456;
                return(returnValue);
            }

            List <SqlParameter> parameters = new List <SqlParameter>();

            StringBuilder hashPassword   = new StringBuilder(_encrypter.Encrypted(newPlayer.Password));
            string        generateString = default;
            string        salt           = _encrypter.Encrypted(generateString.GenerateRandomString(40));

            hashPassword.Append(salt);

            var playerHash = newPlayer.GetHashCode();

            var loginParam      = newPlayer.Login.ToSqlParameter("Login");
            var passwordParam   = hashPassword.ToString().ToSqlParameter("Password");
            var nickNameParam   = newPlayer.NickName.ToSqlParameter("NickName");
            var emailParam      = newPlayer.Email.ToSqlParameter("Email");
            var saltHashParam   = salt.ToSqlParameter("SaltHash");
            var retValParam     = true.ToSqlParameter("ReturnValue");
            var playerHashParam = playerHash.ToString().ToSqlParameter("PlayerHash");

            parameters.Add(loginParam);
            parameters.Add(passwordParam);
            parameters.Add(nickNameParam);
            parameters.Add(emailParam);
            parameters.Add(saltHashParam);
            parameters.Add(retValParam);
            parameters.Add(playerHashParam);

            var dataSet = await _sqlManager.ExecuteDataCommand("[Common].[RegisterNewPlayer]", CommandType.StoredProcedure, null, parameters.ToArray());

            var id = dataSet.Elements.First().Rows.First().Elements.First();

            returnValue.NickName = newPlayer.NickName;
            returnValue.PlayerId = (int)id;
            //await _emailService.SendEmailToUser(newPlayer.Email,"",EmailType.Welcome, new EmailData(){NickName = returnValue.NickName, PlayerId  = returnValue.PlayerId, PlayerHash = playerHash .ToString()});
            // return error code
            return(returnValue);
        }
Beispiel #16
0
        public async Task <UserRegisterResponseModel> RegisterUser(UserRegisterRequestModel registerRequestModel)
        {
            // first check whether email exists in database
            var dbUser = await _userRepository.GetUserByEmail(registerRequestModel.Email);

            // user exists in database
            if (dbUser != null)
            {
                throw new ConflictException("user already exists, please login");
            }

            // continue with our hashing
            // generate salt randomly
            var salt = CreateSalt();

            var hashedPassword = HashPassword(registerRequestModel.Password, salt);

            // save user Entity to database

            // create a salt and add salt to the user entered password and create user object and
            // save it to database


            // make new user
            var user = new User
            {
                FirstName      = registerRequestModel.FirstName,
                LastName       = registerRequestModel.LastName,
                Email          = registerRequestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                //DateOfBirth = registerRequestModel.dateOfBirth
            };

            // add new user to database
            var createdUser = await _userRepository.AddAsync(user);

            //make response model to return back to view
            var createdUserResponseModel = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(createdUserResponseModel);
        }
Beispiel #17
0
        public async Task <UserRegisterResponseModel> GetUserDetails(int id)
        {
            var user = await _userRepository.GetByIdAsync(id);

            if (user == null)
            {
                throw new NotFoundException("User", id);
            }

            var response = new UserRegisterResponseModel
            {
                Id = user.Id, Email = user.Email, FirstName = user.FirstName, LastName = user.LastName
            };

            return(response);
        }
Beispiel #18
0
        public async Task <UserRegisterResponseModel> RegisterUser(UserRegisterRequestModel requestModel)
        {
            // Step 1 : Check whether this user already exists in the database
            var dbUser = await _userRepository.GetUserByEmail(requestModel.Email);

            if (dbUser != null)
            {
                // we already have this user(email) in our table
                // return or throw an exception saying Conflict user
                throw new Exception("User already registered, Please try to Login");
            }


            // Step 2: genereate a random unique salt.

            var salt = _cryptoService.GenreateSalt();

            // Step 3: never ever create your own hasing algorithm, always use industry tested/tried hashing algorithm
            // hash password with salt

            var hashedPassword = _cryptoService.HashPassword(requestModel.Password, salt);

            // create User object so that we can save it to User Table

            var user = new User
            {
                Email          = requestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                FirstName      = requestModel.FirstName,
                LastName       = requestModel.LastName
            };

            //setp 4: save it to database

            var createdUser = await _userRepository.AddAsync(user);

            var response = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(response);
        }
Beispiel #19
0
        public async Task <UserRegisterResponseModel> GetUserById(int id)
        {
            var user = await _userRepository.GetByIdAsync(id);

            if (user == null)
            {
                return(null);
            }
            var cur = new UserRegisterResponseModel
            {
                Email     = user.Email,
                FirstName = user.FirstName,
                LastName  = user.LastName,
                Id        = user.Id
            };

            return(cur);
        }
Beispiel #20
0
        public async Task <UserRegisterResponseModel> GetUserDetails(int id)
        {
            var dbUser = await _userRepository.GetByIdAsync(id);

            if (dbUser == null)
            {
                return(null);
            }
            var resp = new UserRegisterResponseModel()
            {
                Id        = dbUser.Id,
                Email     = dbUser.Email,
                FirstName = dbUser.FirstName,
                LastName  = dbUser.LastName,
            };

            return(resp);
        }
        public async Task <UserRegisterResponseModel> RegisterUser(UserRegisterRequestModel userRegisterRequestModel)
        {
            // first we need to check the email does not exists in our database

            var dbUser = await _userRepository.GetUserByEmail(userRegisterRequestModel.Email);

            if (dbUser != null)
            {
                // email exists in db
                throw new Exception("User already exists, please try to login");
            }

            // generate a unique Salt
            var salt = CreateSalt();

            // hash the password with userRegisterRequestModel.Password + salt from above step
            var hashedPassword = CreateHashedPassword(userRegisterRequestModel.Password, salt);

            // call the user repository to save the user Info

            var user = new User
            {
                FirstName      = userRegisterRequestModel.FirstName,
                LastName       = userRegisterRequestModel.LastName,
                Email          = userRegisterRequestModel.Email,
                DateOfBirth    = userRegisterRequestModel.DateOfBirth,
                Salt           = salt,
                HashedPassword = hashedPassword
            };

            var createdUser = await _userRepository.Add(user);

            // convert the returned user entity to UserRegisterResponseModel

            var response = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName,
                Email     = createdUser.Email
            };

            return(response);
        }
Beispiel #22
0
        public async Task <UserRegisterResponseModel> GetUserDetailsByEmail(string email)
        {
            var user = await _userRepository.GetUserByEmail(email);

            if (user == null)
            {
                throw new NotFoundException("User", email);
            }

            var result = new UserRegisterResponseModel
            {
                Id        = user.Id,
                Email     = user.Email,
                FirstName = user.FirstName,
                LastName  = user.LastName
            };

            return(result);
        }
Beispiel #23
0
        public async Task <UserRegisterResponseModel> RegisterUser(UserRegisterRequestModel registerRequest)
        {
            //first check if user registered
            var dbuser = await _userRepository.GetUserByEmail(registerRequest.Email);

            if (dbuser != null)
            {
                throw new ConflictException("User Already exists,please try to login");
            }

            //generate a unique salt
            var salt = CreateSalt();

            //hash the password with salt

            var hashedPassword = CreateHashedPassword(registerRequest.Password, salt);

            // then create User Object and save it to database with UserRepository

            var user = new User()
            {
                FirstName      = registerRequest.FirstName,
                LastName       = registerRequest.LastName,
                Email          = registerRequest.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                DateOfBirth    = registerRequest.DateTime,
            };

            // call repository to save User info that included salt and hashed password
            var createdUser = await _userRepository.AddAsync(user);

            // map user object to UserRegisterResponseModel object
            var createdUserResponse = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(createdUserResponse);
        }
Beispiel #24
0
        public async Task <UserRegisterResponseModel> CreateUser(UserRegisterRequestModel requestModel)
        {
            // 1. Call GetUserByEmail  with  requestModel.Email to check if the email exists in the User Table or not
            // if user/email exists return Email already exists and throw an Conflict exception

            // if email does not exists then we can proceed in creating the User record
            // 1. var salt =  Genreate a random salt
            // 2. var hashedPassword =  we take requestModel.Password and add Salt from above step and Hash them to generate Unique Hash
            // 3. Save Email, Salt, hashedPassword along with other details that user sent like FirstName, LastName etc
            // 4. return the UserRegisterResponseModel object with newly craeted Id for the User

            var dbUser = await _userRepository.GetUserByEmail(requestModel.Email);

            if (dbUser != null)
            {
                throw new Exception("Email alreadyy exists");
            }

            var salt           = _cryptoService.CreateSalt();
            var hashedPassword = _cryptoService.HashPassword(requestModel.Password, salt);

            var user = new User
            {
                Email          = requestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                FirstName      = requestModel.FirstName,
                LastName       = requestModel.LastName
            };

            var createdUser = await _userRepository.AddAsync(user);

            var response = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = requestModel.Email,
                FirstName = requestModel.FirstName,
                LastName  = requestModel.LastName
            };

            return(response);
        }
        public async Task <UserRegisterResponseModel> GetUserById(int id)
        {
            var user = await _userRepository.GetByIdAsync(id);

            if (user == null)
            {
                throw new
                      NotFoundException("User not found!");
            }

            var response = new UserRegisterResponseModel
            {
                Id       = user.Id,
                Email    = user.Email,
                Password = user.Password,
                FullName = user.FullName,
            };

            return(response);
        }
Beispiel #26
0
        public async Task <UserRegisterResponseModel> RegisterUser(UserRegisterRequestModel requestModel)
        {
            /*
             * 1. check if the user is already exists
             * 2. create random salt
             * 3. hash password with salt, using industry tested/tried hashing algorithm
             * 4. Create user object
             * 5. Store to database
             * 6. Generate response
             */
            var dbUser = await _userRepository.GetUserByEmailAsync(requestModel.Email);

            if (dbUser != null)
            {
                // ToDo [refactor ]
                // Throw an exception if user exists.
                // throw new Exception("Email address already exists. Please try to login");
                return(null);
            }

            var salt           = _cryptoService.GenerateSalt();
            var hashedPassword = _cryptoService.HashPassword(requestModel.Password, salt);

            var user = new User
            {
                Email          = requestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                FirstName      = requestModel.FirstName,
                LastName       = requestModel.LastName
            };

            var createdUser = await _userRepository.AddAsync(user);

            var response = new UserRegisterResponseModel {
                Id = createdUser.Id, Email = createdUser.Email, FirstName = createdUser.FirstName, LastName = createdUser.LastName
            };

            return(response);
        }
Beispiel #27
0
        public async Task <UserRegisterResponseModel> CreateUser(UserRegisterRequestModel requestModel)
        {
            //step1: check whether this user already exists in the db
            var dbuser = await _userRepository.GetUserByEmail(requestModel.Email);

            if (dbuser != null)
            {
                //we already have this user(email) in our db
                throw new Exception("User already registered, Please try to login");
            }

            //step 2: create a random unique salt, always use industry hashing algorithm
            var salt = _cryptoService.CreateSalt();


            //step 3: We hash the password with the salt created by the above step
            var hashedPassword = _cryptoService.HashPassword(requestModel.Password, salt);

            //step 4: create user object so that we can save it to User Table
            var user = new User
            {
                Email          = requestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                FirstName      = requestModel.FirstName,
                LastName       = requestModel.LastName
            };
            //Step 5 : Save it to db
            var createdUser = await _userRepository.AddAsync(user);

            var response = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(response);
        }
Beispiel #28
0
        public async Task <UserRegisterResponseModel> CreateUser(UserRegisterRequestModel requestModel)
        {
            //step1: create an user
            //step2: add the created user to the userRepository
            //step3: send the response back to the controller. (important)

            //make sure email does not exist in the database
            //we need to send email to our User repository and see if the data exists for the email
            var dbUser = await _userRepository.GetUserByEmail(requestModel.Email);

            //if the user exists and there's an email that matches it.
            if (dbUser != null && string.Equals(dbUser.Email, requestModel.Email, StringComparison.CurrentCultureIgnoreCase))
            {
                throw new Exception("Email Already Exits");
            }

            //First step is to create a unique random salt.
            var salt           = _encryptionService.CreateSalt();
            var hashedPassword = _encryptionService.HashPassword(requestModel.Password, salt);
            var user           = new User
            {
                Email          = requestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                FirstName      = requestModel.FirstName,
                LastName       = requestModel.LastName
            };
            var createdUser = await _userRepository.AddAsync(user);

            var response = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(response);
        }
Beispiel #29
0
        public async Task <UserRegisterResponseModel> CreateUser(UserRegisterRequestModel requestModel)
        {
            //1.call getuserbyemail to check if  user has already existed
            //if existed, return email already exists and throw an exception
            //else proceed to create user
            //1. generate random salt
            //2. take requesModel.Password together with salt generate unique hashing
            //3. save essential information except for the password it self(save salt also)
            //4. return responseModel
            var dbUser = await _userRepository.GetUserByEmail(requestModel.Email);

            if (dbUser != null)
            {
                throw new Exception("Email has already existed.");
            }
            var salt           = _cryptoService.CreateSalt();
            var hashedPassword = _cryptoService.HashPassword(requestModel.Password, salt);
            var user           = new User
            {
                Email          = requestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                FirstName      = requestModel.FirstName,
                LastName       = requestModel.LastName
            };

            var createdUser = await _userRepository.AddAsync(user);

            var response = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(response);
        }
Beispiel #30
0
        public async Task <UserRegisterResponseModel> RegisterUser(UserRegisterRequestModel registerRequestModel)
        {
            // 1. check whether email exists in db
            var dbUser = await _userRepository.GetUserByEmail(registerRequestModel.Email); //wait from UI

            // 2.1 if exists
            if (dbUser != null)
            {
                throw new ConflictException("user already exists, please login");
            }
            // 2.2 new user, continue with hashing
            // create a salt, add salt to the user entered password
            var salt           = CreateSalt();
            var hashedPassword = HashPassword(registerRequestModel.Password, salt);

            // create user object, save to db
            var user = new User
            {
                FirstName      = registerRequestModel.FirstName,
                LastName       = registerRequestModel.LastName,
                Email          = registerRequestModel.Email,
                Salt           = salt,
                HashedPassword = hashedPassword,
                DateOfBirth    = registerRequestModel.DateOfBirth
            };

            var createdUser = await _userRepository.AddAsync(user);

            var createdUserResponseModel = new UserRegisterResponseModel
            {
                Id        = createdUser.Id,
                Email     = createdUser.Email,
                FirstName = createdUser.FirstName,
                LastName  = createdUser.LastName
            };

            return(createdUserResponseModel);
        }