Class: Security

@nginstack/engine/lib/security/Security~ Security


new Security()

Classe base de interação com o sistema no contexto da segurança.

Este é um objeto poderoso, portanto, deve-se prestar muita atenção ao seu uso Este objeto tem o poder de criar e apagar grupos e usuários, alterar senha e grupos de usuários, entre outros. O desenvolvedor é o único responsável pelos efeitos indesejados que possam decorrer da má utilização desse objeto.

Methods


<static> getInstance()

Obtém uma instância compartilhada desta classe.

Returns:
Type
Security

authenticateUser(userName, password)

Realiza a autenticação de um usuário, devolve a chave do usuário ou -1 caso autenticação não seja permitida por erro de usuário/senha ou devido ao usuário estar bloqueado ou sua senha esteja expirada.

Parameters:
Name Type Description
userName string

Nome do usuário.

password string

Senha do usuário.

Returns:

Chave do usuário autenticado ou -1 caso o usuário ou senha sejam inválidos.

Type
number

authorizeToken(authToken, userName, password)

Autoriza um token previamente criado a ser utilizado pelo sistema.

Parameters:
Name Type Description
authToken AuthToken

Token de autorização.

userName string

Nome de usuário que irá autorizar o token e que será respectivamente vinculado à ele.

password string

Senha do usuário passado para autorização.

See:
Returns:

"ID" único do token que será utilizado para restaurar ou validar uma sessão.

Type
string

changePassword(userKey, oldPassword, newPassword)

Altera a senha de um usuário.

Importante: este método gerará um erro caso esteja sendo utilizada uma política de autenticação que envolva um autorizador externo, como a SSPI (Active Directory). Nesse caso, a modificação deve ser realizada pela interface do autorizador externo. Utilize o método #getAuthPolicyClass para determinar a política de autenticação do usuário.

Parameters:
Name Type Description
userKey number

Chave do usuário.

oldPassword string

Senha antiga.

newPassword string

Nova Senha.


createAuthToken(userName, password, expiration, data, localAuthentication)

Cria um software token, permitindo a autenticação automática numa sessão.

Parameters:
Name Type Description
userName string

Login do usuário dono do token

password string

Senha de usuário

expiration Date

Data de validade do token(somente é considerado o dia)

data string

String opaca, armazenada no token

localAuthentication boolean

Se True, o token será autenticado localmente, sem consultar o banco de dados.

Deprecated:
See:
Returns:

O token criado(somente os caracteres A-Z,a-z,0-9, @, _, =)

Type
string

createGroup(groupName, groups)

Cria um grupo no sistema.

Parameters:
Name Type Description
groupName string

Nome do grupo a ser criado.

groups Array

Grupos dos quais o grupo participará.

See:
Returns:

Chave do grupo criado.

Type
number

createUser(userName, password, groups)

Cria um usuário no sistema.

Parameters:
Name Type Description
userName string

Nome do usuário a ser criado.

password string

Senha do usuário de acesso ao sistema.

groups Array.<number>

Grupos dos quais o usuário participará.

See:
Returns:

Chave do usuário criado.

Type
number

deleteGroup(groupKey)

Exclui um grupo do sistema.

Parameters:
Name Type Description
groupKey number

Chave do grupo.

See:

deleteUser(userKey)

Exclui um usuário do sistema.

Parameters:
Name Type Description
userKey number

Chave do usuário.

See:

getAuthPolicyClass(userKey)

Obtém a classe da política de autenticação configurada para o usuário.

Atualmente, há duas classes possíveis:

  • Política de autenticação padrão (-1898141725): onde o Engine é responsável por autenticar as credenciais do usuário.
  • Política de autenticação SSPI (-1898141724): onde o Engine delega a autenticação das credenciais do usuário ao Windows via API SSPI. Atualmente, é suportado apenas o protocolo Microsoft NTLM.
Parameters:
Name Type Description
userKey DBKey | number

Chave do usuário.

Returns:

Chave da classe da política de autenticação do usuário.

Type
DBKey

getMimeTypesWithPermissionControl()

Obtém as chaves dos tipos de arquivos que tem controle de permissões.

Returns:
Type
Array.<number>

getPermission(classKeyOrVfsKey, permissionFieldName [, userKey] [, getMode] [, extraFilter])

Método utilizado para obter as permissões de um usuário em uma determinada classe ou script da Virtual File System

Parameters:
Name Type Argument Description
classKeyOrVfsKey number

Chave ou nome da classe da qual deseja-se saber se o usuário tem permissão.

permissionFieldName string

Nome do campo da tabela iPermission que define a permissão a ser obtida.

userKey number <optional>

Chave do usuário do qual se deseja descobrir a permissão. Se não for informado, será considerado o usuário logado (session.userKey).

getMode string <optional>

Determina como a permissão deve ser obtida. Os valores possíveis são:
"withoutInheritance": Obtém a permissão para a classe informada sem levar em conta as permissões definidas nas classes mães. Este parâmetro não é adequado para utilização com campos do tipo "string" que podem ser multivalorados, recomendamos o uso do parâmetro "distinct".
"first": Obtém a primeira permissão definida para a classe ou uma de suas mães, levando em conta a ordem da classe informada. A ordem considerada no sentido da classe atual até a classe root.
Neste modo não há herança se a chave informada for um script da iVFS como, por exemplo, um processo.
"max": Obtém o maior valor informado para a classe ou para uma de suas mães.
Neste modo não há herança se a chave informada for um script da iVFS como, por exemplo, um processo.
"min": Obtém o menor valor informado para a classe ou para uma de suas mães.
Neste modo não há herança se a chave informada for um script da iVFS como, por exemplo, um processo.
"distinct": Obtém todos os valores distintos informados para a classe ou para uma de suas mães. Se a permissão informada para uma classe possuir os separadores ";" ou ",", a mesma será dividida e cada elemento será considerado um valor distinto. Neste modo não há herança se a chave informada for um script da iVFS como, por exemplo, um processo.
"concat": Obtém todos os valores informados para a classe ou para uma de suas mães concatenados. Se a permissão informada para uma classe possuir os separadores ";" ou ",", a mesma será dividida e cada elemento será considerado um valor distinto. Neste modo não há herança se a chave informada for um script da iVFS como, por exemplo, um processo.

Se getMode não for informado, ele será considerado como 'withoutInheritance'.

extraFilter string | Array <optional>

Filtro extra que trás a possibilidade de filtrar a permissão por um outro campo da tabela de permissões(iPermission).

Examples
// Testa se o usuário corrente tem acesso à classe Entidades (-2007900000)
  if ( security.getPermission(-2007900000, 'iView') ){
      ...
  }

  // Obtém a lista de campos alteráveis para um determinado usuário. Retornará
  // null se ele possui acesso a todos os campos
  var chgFldNames = security.getPermission(-1896048403,
                                           'iChangeableFieldNames',
                                           userKey,
                                           'distinct');
// Para verificar se o usuário "37860639 -  Teste" tem acesso a classe "43614400 - Contatos" e
 // se o campo "estabeleci" no cadastro de permissões tem o valor
 // "3002932 - Estabelecimento Demonstração"
 security.getPermission(43614400, "iView", 37860639, "withoutInheritance",
     [['Estabeleci', 3002932]]);

getUserAndGroupsKeys(userKey)

Retorna um array contendo as chaves dos grupos aos quais o usuário pertence, onde primeiro item será sempre a chave do próprio usuário.

Esta lista define a ordem de prioridade dos grupos, onde os grupos de um grupo são inseridos logo após este na lista completa. Exemplo: se X participa dos grupos A, B, C, D e E, e o grupo B participa dos grupos D e C, a ordem será: X, A, B, D, C, C, D, E, Todos; que é simplificada para X, A, B, D, C, E e Todos.

Observe que com este conceito, o grupo "Todos" não necessariamente é o último grupo, visto que ele pode ser incluído explicitamente em um grupo.

Eventuais chaves de grupos inválidas, que não existam no cache local, serão ignoradas e não serão inseridas no array retornado, sendo esses casos registrados apenas no log. O motivo desse comportamento é evitar que um eventual erro de integridade impeça o login do usuário no sistema.

Parameters:
Name Type Description
userKey number

Chave do usuário.

Returns:

Array com as chaves dos grupos.

Type
Array

getUserScopes(userKey)

Obtém os escopos de autorização associados diretamente ao usuário ou indiretamente aos seus grupos e papéis.

Parameters:
Name Type Description
userKey DBKey | number

Chave do usuário do qual serão obtidos os escopos de autorização atribuídos.

Returns:

Escopos de autorização atribuídos ao usuário.

Type
Array.<string>

getUserStatus(userKey)

Obtém o status de um usuário.

Parameters:
Name Type Description
userKey number | DBKey

Chave do usuário.

See:
Returns:

Chave de um registro da classe Estados dos Usuários (-1898143910).

Type
DBKey

hasPermissionControl(key)

Indica se a chave informada possui controle de permissão ou não.

Parameters:
Name Type Description
key number

Chave que se deseja saber se há controle de permissões.

Returns:

True Caso tenha controle de permissão. chave.

Type
boolean

isAdministrator(userKey)

Retorna true caso o usuário seja um Administrador do sistema.

Parameters:
Name Type Description
userKey number

Chave do usuário.

Returns:

True se é um Administrador.

Type
boolean

isDeveloper(userKey)

Retorna true caso o usuário seja um Developer.

Parameters:
Name Type Description
userKey number

Chave do usuário.

Returns:

True se é um Developer.

Type
boolean

restoreAuthToken(id)

Recupera um token autorizado anteriormente através dos métodos Security#authorizeToken ou Session#authorizeToken.

Parameters:
Name Type Description
id string

"ID" do token gerado através de sua autorização.

See:
Returns:

Token recuperado.

Type
AuthToken

revokeAuthToken(id)

Revoga a autorização de um token, tornando-o inutilizável.

Parameters:
Name Type Description
id string

Id do token gerado através de sua autorização.

See:

revokeAuthTokenByKey(key, userName, password)

Revoga a autorização de um token, tornando-o inutilizável.

Parameters:
Name Type Description
key number

Chave do registro do AuthToken.

userName string

Nome de usuário que autorizou o token.

password string

Senha referente ao nome de usuário.

See:

setPassword(userKey, password)

Altera a senha do usuário informado.

O usuário autenticado na sessão deverá ter o escopo de autorização "security.changeUserPassword" caso esteja modificando a senha de um outro usuário.

Parameters:
Name Type Description
userKey Object

Chave do usuário que terá a senha alterada.

password Object

Nova senha.


setUserStatus(userKey, status)

Altera o estado da conta do usuário.

Estados possíveis:

  • Ativo: -1898143909
  • Bloqueado: -1898143908
  • Desativado: -1898141728
  • Expirado: -1898143907

Importante: este método gerará um erro caso o estado informado seja "Expirado" (-1898143907) e esteja sendo utilizada uma política de autenticação que envolva um autorizador externo, como a SSPI (Active Directory). Nesse caso, a modificação deve ser realizada pela interface do autorizador externo. Utilize o método #getAuthPolicyClass para determinar a política de autenticação do usuário.

Parameters:
Name Type Description
userKey number | DBKey

Chave do usuário.

status DBKey

Chave de um registro da classe Estados dos Usuários (-1898143910).

See:

suggestPermissionApplyMode(parent)

Sugere o modo de aplicação padrão para uma permissão da classe ou arquivo informado.

Parameters:
Name Type Description
parent number

Chave da classe ou arquivo ao qual a permissão está associada.

Returns:

Chave do modo de aplicação de permissão ou null caso a chave informada não exista ou não seja uma classe.

Type
number

updateAuthToken(token, userName, password)

Atualiza um token previamente autorizado pelo método Security#authorizeToken. Após a autorização de um token, apenas as propriedades module:@nginstack/engine/lib/security/AuthToken~AuthToken#description e module:@nginstack/engine/lib/security/AuthToken~AuthToken#expires podem ser modificadas.

Parameters:
Name Type Description
token AuthToken

Token que terá as suas propriedades atualizadas.

userName string

Nome de usuário que autorizou o token.

password string

Senha do usuário vinculado ao token.

See:

userCanModifyKey(key, classKey [, opt_userKey])

Verifica se o usuário pode alterar o registro informado. Caso seja uma chave do sistema, será verificado se o usuário está habilitado como desenvolvedor do produto do qual a chave faz parte.

Parameters:
Name Type Argument Description
key number

Chave do registro.

classKey number

Classe do registro.

opt_userKey number <optional>

Chave do usuário que deseja saber se possui permissão para alterar um registro. Caso não seja informado será considerado o usuário logado na sessão.

Returns:

True se é possível modificar. False, caso contrário.

Type
boolean

userCanModifyRecord(ds [, opt_userKey])

Verifica se o usuário pode alterar o registro corrente do DataSet. Caso seja um registro do sistema, será verificado se o usuário está habilitado como desenvolvedor do produto do qual o registro faz parte.

Parameters:
Name Type Argument Description
ds DataSet

Dataset que contém o registro que será verificado.

opt_userKey number <optional>

Chave do usuário que deseja saber se possui permissão para alterar um registro. Caso não seja informado será considerado o usuário logado na sessão.

Returns:

True se é possível alterar. False, caso contrário.

Type
boolean

userHasScope(userKey, scope)

Verifica se o escopo informado foi atribuído ao usuário.

Parameters:
Name Type Description
userKey DBKey | number

Chave do usuário ao qual se deseja verificar a atribuição do escopo.

scope string | DBKey | number

Nome ou chave do escopo a ter a atribuição verificada.

Returns:

True se o escopo indicado por scope tiver sido atribuído ao usuário.

Type
boolean