public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { try { IServicePlayer servicePlayer = _container.Resolve <IServicePlayer>(); AuthenticatePlayerRequest request = new AuthenticatePlayerRequest(); request.Email = context.UserName; request.Password = context.Password; AuthenticatePlayerResponse response = servicePlayer.AuthenticatePlayer(request); if (servicePlayer.IsInvalid()) { if (response == null) { context.SetError("invalid_grant", "Preencha um e-mail válido e uma senha com pelo menos 6 caracteres."); return; } } servicePlayer.ClearNotifications(); if (response == null) { context.SetError("invalid_grant", "Jogador não encontrado!"); return; } var identity = new ClaimsIdentity(context.Options.AuthenticationType); //Definindo as Claims identity.AddClaim(new Claim("Player", JsonConvert.SerializeObject(response))); var principal = new GenericPrincipal(identity, new string[] { }); Thread.CurrentPrincipal = principal; context.Validated(identity); } catch (Exception ex) { context.SetError("invalid_grant", ex.Message); } }
public Task <AuthenticatePlayerResponse> AuthenticatePlayer([FromBody] AuthenticatePlayerRequest request) { AuthenticatePlayerResponse response = null; var result = GetPlayer <AuthenticatePlayerResponse>(request.PlayerToken); if (result.Item2 != null) { response = result.Item2; } else { response = new AuthenticatePlayerResponse() { CurrencyCode = result.Item1.CurrencyCode, LanguageCode = result.Item1.LanguageCode, PlayerLimit = result.Item1.PlayerLimit, Email = result.Item1.Email, NickName = $"{result.Item1.Name} {result.Item1.Surname}", PlayerId = result.Item1.Id, Code = BrandApiErrorCode.Ok } }; return(Task.FromResult(response)); }