public async Task <ActionResult <UserModel> > Create([FromBody] UserCreateRequestModel user) { // Validation is done by MVC request model. //if (!user.IsValidUsername()) // return BadRequest(new ErrorModel(400, "invalid username")); //if (!user.IsValidPassword()) // return BadRequest(new ErrorModel(400, "invalid new password")); if (await database.GetUserByUserName(user.UserName) != null) { return(BadRequest(new ErrorModel(400, "username already taken"))); } user.AfterCreate(); user.LastLogin = default; user.DisplayName = user.DisplayName.IsNullOrEmpty() ? user.UserName : user.DisplayName; user.PasswordHash = hasher.Create(user.Password); // TODO: Replace with mail confirmation user.EmailAddress = null; await database.Put(user); var resUser = new UserModel(user); return(Created("user", resUser)); }
public async Task <ActionResult <UserModel> > Initialize([FromBody] UserCreateRequestModel user) { var usersCount = await database.Count <UserModel>(); if (usersCount > 0L) { return(BadRequest(new ErrorModel(400, "already initialized"))); } if (!user.IsValidUsername()) { return(BadRequest(new ErrorModel(400, "invalid username"))); } if (!user.IsValidPassword()) { return(BadRequest(new ErrorModel(400, "invalid new password"))); } user.AfterCreate(); user.LastLogin = default; user.IsAdmin = true; user.DisplayName = user.DisplayName.IsNullOrEmpty() ? user.UserName : user.DisplayName; user.PasswordHash = hasher.Create(user.Password); await database.Put(user); var resUser = new UserModel(user); return(Created("user", resUser)); }