Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }