public async Task <IActionResult> RegisterAsync([FromBody] ValidableCredentials credentials)
        {
            var actionResponseBuilder = GetEmptyResponseBuilder <ValidableSession>();

            try
            {
                if (ModelState.IsValid)
                {
                    var session = await _sessionService.RegisterAsync(credentials);

                    actionResponseBuilder.SetData(session);

                    return(Ok(actionResponseBuilder.Build()));
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                actionResponseBuilder.AddError(new Common.Utilities.ErrorMessage(Common.Enums.ErrorType.Invalid, ex.Message));
                return(BadRequest(actionResponseBuilder.Build()));
            }
        }
Пример #2
0
        public async Task <ValidableSession> RegisterAsync(ValidableCredentials credentials)
        {
            var user       = credentials.ToUser <TUser>();
            var resultFlag = await _userService.CreateAsync(user, credentials.Password, credentials.Parameters);

            if (resultFlag)
            {
                var roles = await _userService.GetRolesAsync(user);

                var claims = await _userService.GetClaimsAsync(user);

                var tokenInfo = _tokenHelper.Generate(user, roles, claims, _securitySettings.PrivateKey);
                var session   = new ValidableSession(user, tokenInfo, credentials.Parameters);

                return(session);
            }
            else
            {
                throw new AuthenticationException($"User {user.UserName} could not be created");
            }
        }