Agora que você já conhece o pacote Mingle e sua configuração inicial já está funcionando, vamos utilizar o Mingle para realizar a autenticação do usuário ao host do cliente ( Protheus, Datasul, Logix, Smart).

Pré requisitos: 

Considere o arquivo: login.component.ts

Importe a classe MingleService


import { MingleService } from '@totvs/mingle';


Na sua função de login, utilize o método mingleService.auth.login(usuário, senha, alias)

Lembrando que os dados de autenticação, usuário e senha, serão enviados para a autenticação do seu host (Protheus, Logix, Datasul, etc...)


export class LoginComponent implements OnInit {

 constructor(private mingleService: MingleService,
   private configService: ConfigService,
   private route: Router,
   private poNotification: PoNotificationService) { }
 
 ngOnInit(): void {}
 
 login(formulario) {
   this.mingleService.auth.login(formulario.login,
     formulario.password,
     this.configService.getAlias())
     .subscribe((dataLogin) => {
       console.log("Login com sucesso - dados do login", dataLogin);
      
       this.route.navigate(['home']);
     }, (authError) => {
       console.log(authError);
       console.error('Falha na autenticação');
     });}}


No caso deste tutorial o valor do parâmetro Alias foi obtido através de um método "getAlias" que criamos no aplicativo de demonstração, mas o parâmetro pode ser passado como string.


Após executar o Login no aplicativo, o retorno de sucesso será parecido com este: 

{"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9Mug",
"muser":{"_id":"5ffda7bdaacb0685f34d59e2","login":"exemplo"},
"set":{"_id":"5fbe5712d8ccbf002cf443f3","alias":"TOTVS"},
"params_values":[{"_id":"5fbe5712d8ccbf002cf443f2","key":"EMPRESA","value":"123"}],
"client":{"_id":"5eeb67edeb62740029b1f03f","name":"TOTVS_TDN"},
"wso2":{},
"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNWZmZGE3YmRhYWNiMDY4NWYzNGQ1OWUyIiwic2V0X2lkIjoiNWZiZTU3MTJkOGNjYmYwMDJjZjQ0M2YzIiwiY2xpZW50X2lkIjoiNWVlYjY3ZWRlYjYyNzQwMDI5YjFmMDNmIiwiYXBwX2lkIjoiNWZiMmFlMmE1NzVhZTgwMDRhN2QxZmY1Iiwib3JpZ2luIjoibW9iaWxlIiwidXR5cGUiOiJQcm94eVVzZXIiLCJ0dHlwZSI6InIiLCJpYXQiOjE2MTA0NTkwNjksImV4cCI6MTYxMDU1OTA2OSwiYXVkIjoibWluZ2xlIiwiaXNzIjoid2VidGVzdGluZzogTGludXggeDg2XzY0In0.CO9WF84Z3LmpauISeEPyDxVn4BA3jiWlRtVo68_7av8","
auth_driver":"protheus"}


A chave access_token é armazenada no storage do navegador pelo mingleService para ser utilizada em outras etapas do aplicativo que requer comprovação de autenticação, como por exemplo uma chamada de gateway. Essa chave tem um prazo de validade e requer uma nova autenticação quando expirar. 


Refresh Token

LOGOUT

Para realizar o logout utilize o nosso método mingleService.auth.logout();

this.mingleService.auth.logout().subscribe(() => {
     console.log("Usuário deslogado");
     this.route.navigate(['login']);
})