示例#1
0
        public async Task <Result> RegisterAsync(UserRegisterModel userModel)
        {
            try
            {
                var existingUser = _userRepository.Queryable().FirstOrDefault(x => x.UserName == userModel.UserName);
                if (existingUser != null)
                {
                    return(new FailureResult("User is already registered."));
                }

                var userEnt = userModel.Adapt <User>();
                userEnt.DateCreated = DateTime.Now;
                userEnt.Password    = getHashPassword(userModel.Password);

                //insert user
                await _userRepository.InsertAsync(userEnt);

                var responseModel = userEnt.Adapt <UserModel>();

                //after save user login process and update token coloumn.
                var tokenResult = await AuthenticateAsync(userModel.UserName, userModel.Password);

                string token = (tokenResult.Root as AuthModel).Token;
                await UpdateUserTokenAsync(userEnt, token);

                responseModel.UserToken = token;
                responseModel.Password  = ""; // for security
                return(new SuccessResult(responseModel, "User register process is successful."));
            }
            catch (Exception ex)
            {
                return(new FailureResult("An error has been occurred ex message : " + ex.Message));
            }
        }