public static void Init()
 {
     contextOptsBuilder = new DbContextOptionsBuilder <AccountStoreContext>();
     contextOptsBuilder.UseInMemoryDatabase("AccountTests");
     accountDbContext  = new AccountStoreContext(contextOptsBuilder.Options);
     controllerContext = new ControllerContext
     {
         HttpContext = new DefaultHttpContext()
     };
 }
Beispiel #2
0
        public async Task AutheticateAsync([FromServices] IPasswordHasher <Account> pwdValidator, [FromServices] AccountStoreContext dataContext, AuthModel authModel)
        {
            try
            {
                var account = await dataContext.Accounts.SingleOrDefaultAsync(account => account.Username == authModel.Username);

                if (account == null)
                {
                    Response.StatusCode = (int)HttpStatusCode.NotFound;
                    await Response.BodyWriter.WriteAsync(Encoding.UTF8.GetBytes("Usuário não cadastrado"));
                }
                else
                {
                    if (account.Enable)
                    {
                        var pwdVerificationResult = pwdValidator.VerifyHashedPassword(account, account.PasswordHash, authModel.Password);
                        Response.StatusCode = (int)(pwdVerificationResult != PasswordVerificationResult.Failed ? HttpStatusCode.OK : HttpStatusCode.Unauthorized);
                        switch (pwdVerificationResult)
                        {
                        case PasswordVerificationResult.SuccessRehashNeeded:
                        case PasswordVerificationResult.Success:
                            await Response.BodyWriter.WriteAsync(Encoding.UTF8.GetBytes("JWT"));

                            break;

                        default:
                            await Response.BodyWriter.WriteAsync(Encoding.UTF8.GetBytes("Senha incorreta"));

                            break;
                        }
                    }
                    else
                    {
                        Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                        await Response.BodyWriter.WriteAsync(Encoding.UTF8.GetBytes("Usuário não autorizado"));
                    }
                }
            }
            catch (Exception ex)
            {
                Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                await Response.BodyWriter.WriteAsync(Encoding.UTF8.GetBytes(ex.Message));
            }
        }