示例#1
0
        public async Task Create(CreateAccountData data)
        {
            if (data == null)
            {
                throw new MissingArgumentsException(nameof(data));
            }
            if (string.IsNullOrEmpty(data.Name))
            {
                throw new MissingArgumentsException(nameof(data.Name));
            }
            if (string.IsNullOrEmpty(data.Login))
            {
                throw new MissingArgumentsException(nameof(data.Login));
            }
            if (string.IsNullOrEmpty(data.Password))
            {
                throw new MissingArgumentsException(nameof(data.Password));
            }

            var loginExists = await _db.User.AnyAsync(x => x.Login == data.Login);

            if (loginExists)
            {
                throw new RuleException("The given login already exists");
            }

            var user = User.New(data.Name, data.Login);

            user.SetPassword(data.Password);

            await _db.User.AddAsync(user);
        }
示例#2
0
        public async Task <ActionResult <AuthenticationResult> > New([FromBody] CreateAccountData data)
        {
            try
            {
                await repo.Create(data);

                await repo.SaveChangesAsync();
            }
            catch (RuleException ruleException)
            {
                return(UnprocessableEntity(ruleException));
            }
            catch (MissingArgumentsException missingArgumentsException)
            {
                return(BadRequest(missingArgumentsException));
            }
            catch (Exception exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, exception));
            }

            var authenticationData = new AuthenticationData()
            {
                Login    = data.Login,
                Password = data.Password
            };

            return(await Authenticate(authenticationData));
        }
示例#3
0
 public async Task <IActionResult> CreateAccount([FromBody] CreateAccountData accData)
 {
     try
     {
         await _accountService.CreateAccount(accData);
     }
     catch (Exception)
     {
         return(BadRequest());
     }
     return(NoContent());
 }
示例#4
0
        public void AccountService_CreateAccount_Test()
        {
            var createAccData = new CreateAccountData()
            {
                password  = "******",
                username  = "******",
                firstName = "firstName",
                lastName  = "lastName",
                email     = "*****@*****.**"
            };

            var response = mockAccountService.Object.CreateAccount(createAccData);

            Assert.True(response.IsCompletedSuccessfully);
            mockAccountService.Verify();
        }
示例#5
0
        public void AccountController_CreateAccount_Test()
        {
            //arrange
            var mockController = new AccountController(mockAccountService.Object);
            var createAccData  = new CreateAccountData()
            {
                username  = "******",
                password  = "******",
                firstName = "John",
                lastName  = "Doe",
                email     = "*****@*****.**"
            };
            //act
            var result = mockController.CreateAccount(createAccData);

            //assert
            Assert.True(result.IsCompletedSuccessfully);
        }
示例#6
0
        public override JsonOperationResponseBase OnOperation(Arguments arguments, Authentication authentication)
        {
            ContentType = "text/plain";

            CreateAccountData request = new CreateAccountData()
            {
                username = arguments["username"],
                password = arguments["password"]
            };

            if (!request.IsValidRequest())
            {
                return(new CreateAccountResponse()
                {
                    Error = "All fields were not filled out"
                });
            }

            if (!User.IsValidUsername(request.username, out string usernameError))
            {
                return(new CreateAccountResponse()
                {
                    Error = string.Format("Invalid username, {0}", usernameError)
                });
            }
            if (!User.IsValidPassword(request.password, out string passwordError))
            {
                return(new CreateAccountResponse()
                {
                    Error = string.Format("Invalid password, {0}", passwordError)
                });
            }

            User newUser = User.CreateNewUser(request.username, request.password);

            Session session = UserManager.Instance.SignInAsUser(request.username, request.password);

            OutputConsole.WriteLine("New user signed up " + newUser.UserID + " (" + newUser.Username + ")");

            return(new CreateAccountResponse()
            {
                sessionID = session.Key
            });
        }
示例#7
0
        public async Task CreateAccount(CreateAccountData cad)
        {
            string defaultUrl = _config["DefaultAvatarUrl"] ?? throw new Exception("No Default avatar url in appsettings");
            var    account    = new Account()
            {
                username  = cad.username,
                password  = cad.password,
                firstName = cad.firstName,
                lastName  = cad.lastName,
                email     = cad.email,
                avatarUrl = defaultUrl
            };

            try
            {
                await _accountDao.CreateAccount(account);
            }
            catch (Exception e)
            {
                throw new CustomException(e.Message, e);
            }
        }