Esempio n. 1
0
        public async Task <UserCredentials> CreateUserCredentials(string key, bool logToConsole = true)
        {
            var request = new CreateUserTokenRequest {
                Key = key
            };
            var token = await Post <CreateUserTokenRequest, UserCredentials>(request, "tokens/user");

            if (logToConsole)
            {
                Console.WriteLine($"Created Token for User '{key}': {ToJson(token)}");
            }
            ;
            return(token);
        }
Esempio n. 2
0
        public async Task CreateUserToken(CreateUserTokenRequest request)
        {
            var sqlStoredProc = "sp_user_token_create";

            var response = await DapperAdapter.GetFromStoredProcAsync <int>
                           (
                storedProcedureName : sqlStoredProc,
                parameters : request,
                dbconnectionString : DefaultConnectionString,
                sqltimeout : DefaultTimeOut,
                dbconnection : _connection,
                dbtransaction : _transaction);

            if (response == null || response.First() == 0)
            {
                throw new System.Exception("No items have been created");
            }
        }
Esempio n. 3
0
        public async Task <IActionResult> CreateUserToken([FromBody] CreateUserTokenRequest request)
        {
            try
            {
                // validate that the user exists in the database
                if (!await _hiarcDatabase.IsValidUserKey(request.Key))
                {
                    _logger.LogWarning($"A token was requested for user key '{request.Key}' but the user key does not exist");
                    return(StatusCode(StatusCodes.Status404NotFound));
                }

                var utcNow           = DateTime.UtcNow;
                var expiresInMinutes = request.ExpirationMinutes ?? _hiarcSettings.JWTTokenExpirationMinutes;
                var tokenHandler     = new JwtSecurityTokenHandler();
                var jwtKey           = Encoding.ASCII.GetBytes(_hiarcSettings.JwtSigningKey);
                var tokenDescriptor  = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new Claim[]
                    {
                        new Claim(ClaimTypes.Role, Auth.USER_ROLE_CLAIM_VALUE),
                        new Claim(ClaimTypes.Name, request.Key)
                    }),
                    Expires            = utcNow.AddMinutes(expiresInMinutes),
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(jwtKey), SecurityAlgorithms.HmacSha256Signature)
                };

                var token       = tokenHandler.CreateToken(tokenDescriptor);
                var JWT         = tokenHandler.WriteToken(token);
                var credentials = new UserCredentials
                {
                    UserKey     = request.Key,
                    BearerToken = JWT,
                    CreatedAt   = utcNow,
                    ExpiresAt   = tokenDescriptor.Expires.Value
                };

                return(Ok(credentials));
            }
            catch (Exception ex)
            {
                return(BuildErrorResponse(ex, _logger));
            }
        }