Disponível a partir da build: 19.3.1 do appserver.

Definição

Essa função tem a responsabilidade de carregar as propriedades que serão utilizadas posteriormente tanto na geração dos tokens(access/refresh), quanto na validação do acesso, sendo a sua declaração e existência da função responsável obrigatória.

Informações importantes

Observações

Utilização

Exemplo de aplicação com apenas 1 usuário fixo e propriedades carregadas a partir das #define:


#define cliente_secret_ 'secret'
#define cliente_access_expires 3600
#define cliente_refresh_expires Date()+1
#define cliente_id 'clienteId'
#define cliente_oAuth2_user 'nomedoUsuario'
#define cliente_oAuth2_password 'passworddoUsuario'

User function paramsProvider(jParams)

local jCliente := {;
    "client_id" : client_id , ; // string
    "client_secret" : cliente_secret,; // string
    "username" : cliente_oAuth2_user ,; // string
    "password" : cliente_oAuth2_password  ,; // string
    "grant_type" : "password",; //string este conteúdo deve ser fixo por enquanto
    "access_expires" : 3600,; //integer tempo em milissegundos
    "refresh_expires" : Date() + 1,;// ou para o caso de data fixa, o formato de data: "mm/dd/yyyy" -> "12/31/2021"
    "JWTRoutes" : {}; //parametro opcional momentâneamente.
    }

  //obtendo as propriedades da variável JSon criadas acima para poder popular o objeto nativo jParams que é passado por referencia.  
  local aProps := jCliente:GetNames()


  //Adicionando as propriedades não existentes no objeto nativo jParams
  //Aqui deve-se ficar atento para que todas as propriedades tenham os seus valores carregados, mesmo quando não estejam presentes no objeto recebido(jParams).
  aEval(aProps,{|x,y| iIf(!(jParams:hasProperty(x)), jParams[x] := jCliente[x],'')})
  
 Return



A partir da build: 20.3.1 do Appserver será possível trabalhar com o armazenamento e a validação de múltiplos usuários.


Parâmetros

PropriedadeTipo DescriçãoExemplo de utilização
client_idCharIdentificação do cliente dentro da corporação"_1xpto124324523@3"
client_secretCharChave secreta para composição do token"asdja$d#als!54w5tf@akl"
usernameChar ou Array de ObjetosNome do usuário"nomedousuario" ou { "username": "nomedousuario", "password": "teste123987155asd" },
passwordChar ou Array de ObjetosSenha do usuário"teste123987155asd" ou { "username": "nomedousuario", "password": "teste123987155asd" },
grant_typeChar ou Array de ObjetosDevido ao modelo implementado o valor deve "password""password" ou { "grant_type": "password" }
access_expiresIntTempo de validade do token de acesso em milissegundos3600
refresh_expiresChar/DateData de validade do refresh token"mm/dd/yy" | "mm/dd/yy" | Date() | "Date()+1"
User function flexibleParamsProvider(jParams) 

  local jClientParams := JSonObject():new()
  local cStringToJson := '{"client":[{"client_id": "7LpPC0r3","client_secret": "TlPp#S3cre7@"}],'+;
                         '"expires":[{"access_expires": 3600,"refresh_expires": "Date()+1"}],'+;
                         '"users":[{"username": "7LpPC0r3o@u7h2","password": "P@s5w0rD&7LpPC0r3"},'+;
                            '{"username": "tlppCore","password": "Senha1234"},'+;
                            '{"username": "Pr0ba7","password": "Senh@D3T3ste"}],'+;
                         '"types": [{"grant_type":"password"}]}';
                       //obtendo as propriedades da variável JSon criadas acima para poder popular o objeto nativo jParams que é passado por referencia.  
  local aProps := jCliente:GetNames()


  //Adicionando as propriedades não existentes no objeto nativo jParams
  //Aqui deve-se ficar atento para que todas as propriedades tenham os seus valores carregados, mesmo quando não estejam presentes no objeto recebido(jParams).

  aEval(aProps,{|x,y| iIf(!(jParams:hasProperty(x)), jParams[x] := jCliente[x],'')})
  
 Return
{
  "client_id": "7LpPC0r3",
  "client_secret": "TlPp#S3cre7@",
  "expires": [
    {
      "access_expires": 3600,
      "refresh_expires": "Date()+1"
    }
  ],
  "users": [
    {
      "username": "7LpPC0r3o@u7h2",
      "password": "P@s5w0rD&7LpPC0r3"
    },
    {
      "username": "tlppCore",
      "password": "Senha1234"
    },
    {
      "username": "Pr0ba7",
      "password": "Senh@D3T3ste"
    }
  ],
  "types": [
    {
      "grant_type": "password"
    }
  ],
 }