예제 #1
0
        public ActionResult Create([FromBody] JsonElement jsUser)
        {
            try
            {
                //Add checking if user already exits by username or email
                var user          = JsonConvert.DeserializeObject <NewUserModel>(jsUser.GetRawText());
                var matchUserName = _users.GetUser(user.UserName).Result;
                if (matchUserName != null || _users.GetUserByEmail(user.Email).Result != null)
                {
                    if (matchUserName != null)
                    {
                        return(BadRequest("UserName already exists!"));
                    }
                    else
                    {
                        return(BadRequest("Email already exists!"));
                    }
                }
                var recoveryCodes = GenerateRecovery();

                _users.Create(new UserModel
                {
                    Id        = user.Id,
                    UserName  = user.UserName,
                    FirstName = user.FirstName,
                    LastName  = user.LastName,
                    Email     = user.Email,
                    UserType  = user.UserType,
                    Specialty = user.Specialty,
                    ProjectId = new List <ObjectId>()
                }).Wait();
                var id   = _users.GetUser(user.UserName).Result.Id;
                var hash = HashSalt(user.Password, null);

                _login.Create(new LoginModel {
                    Id = id, UserName = user.UserName, Email = user.Email, Password = hash.Pass, Recovery = recoveryCodes.HashKey
                });
                Task.Run(() => _salt.Create(new SaltModel(id, Convert.ToBase64String(GenerateSalt()), hash.Salt, recoveryCodes.SaltKey)));
                Task.WaitAll();
                return(Ok(new APIReqModel {
                    Json = string.Join(",", recoveryCodes.Key.ToArray())
                }));
            }
            catch
            {
                //  return BadRequest();
                throw new Exception("Error code 3.2 - UserController Post Create user error");
            }
        }
 public void Create(User user) => userCrud.Create(user);