Scripts de extensão do Redefinição de senha

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 9 min. de leitura
  • Os scripts de extensão permitem que você estenda a funcionalidade do Redefinição de senha para armazenamento de credenciais, verificação ou tipos de identificação.

    Inclusões de script de extensão do Redefinição de senha

    Cada inclusão de script está associada a uma categoria específica, que está disponível no campo apropriado de um formulário do Redefinição de senha.

    Nota:
    Crie scripts de extensão somente a partir do formulário Redefinição de senha Script de extensão (Redefinição de senha > Extensões > Novo script de extensão). Scripts de extensão são inclusões de script para fins especiais que não são criadas no Definição do Sistema > Inclusões de script interface. Para usar uma inclusão de script como um script de extensão, você deve defini-la com o status Ativo.

    Categoria de inclusão de script "Verificação de inscrição"

    Categoria de inclusão de script Descrição Assinatura de método Campos de entrada Campos de saída
    Verificação de inscrição Verifica se um usuário está inscrito para uma determinada verificação. process(params) Parâmetros:
    • params.userId: o sys_id do usuário a ser verificado (tabela: sys_user).
    • params.verificationId: o sys_id da verificação a ser checada (tabela: pwd_verification).
    Retorna: (booliano) verdadeiro, se o usuário estiver inscrito na verificação especificada; caso contrário, falso.

    Esse exemplo de Verificação de inscrição sinaliza que o usuário está inscrito se os dois parâmetros esperados forem fornecidos. O código estaria contido no campo Script de um script de extensão chamado SampleEnrollmentCheck:

    var SampleEnrollmentCheck = Class.create ();
    SampleEnrollmentCheck. prototype = {
      category:'password_reset.extension.enrollment_check', // DO NOT REMOVE THIS LINE!
     
       /**********
       * Returns boolean telling whether the user is enrolled.
       * This sample returns true if both parameters are supplied, false otherwise 
       *
       * @param params.userId         The sys-id of the user being checked (table: sys_user)
       * @param params.verificationId The sys-id of the verification being checked (table: pwd_verification)
       * @return Boolean indicating whether the user is enrolled into the specified verification
       **********/
      process:function (params) {return (params.userId && params.verificationId)? true:false; },
     
      type:'SampleEnrollmentCheck'};

    Categoria de inclusão de script do "Processador do formulário de inscrição"

    Categoria de inclusão de script Descrição Assinatura de método Campos de entrada Campos de saída
    Processador do formulário de inscrição Verifica se todas as informações necessárias foram coletadas do usuário. Armazena as informações para que possam ser usadas para verificação quando o usuário redefinir a senha. process(params) Parâmetros:
    • params.resetRequestId: o sys_id da solicitação atual do Redefinição de senha (tabela: pwd_reset_request).
    • params.userId: o sys_id do usuário a ser verificado (tabela: sys_user).
    • params.verificationId: o sys_id da verificação a ser processada (tabela: pwd_verification).
    • request: o objeto de solicitação do formulário. Os campos no formulário podem ser acessados com request.getParameter('<element-id>').
    As seguintes informações devem ser adicionadas ao estado do processo de inscrição:
    • gs.getSession().putProperty("result.status",status): se o usuário foi inscrito com sucesso.
    • gs.getSession().putProperty("result.message", message): uma mensagem associada a ser retornada à IU, como uma mensagem de erro detalhada.
    • gs.getSession().putProperty("result.value", value): um valor personalizado associado à inscrição.
    Retorna: (booliano) verdadeiro, se o usuário estiver inscrito na verificação especificada; caso contrário, falso.

    Esse exemplo processa um envio de formulário de inscrição com sucesso se a resposta enviada pelo usuário foi bem-sucedida. O código estaria contido no campo Script de um script de extensão chamado SampleEnrollmentProcessor:

    var SampleEnrollmentProcessor = Class.create ();
    SampleEnrollmentProcessor.prototype = {
        category: 'password_reset.extension.enrollment_form_processor', // DO NOT REMOVE THIS LINE!
     
         /**********
        * Process the enrollment form request, and return whether the user was successfully enrolled.
        * 
        * @param params.userId         The sys_id of the user trying to enroll (table: sys_user)
        * @param params.verificationId The sys_id of the verification to be enrolled into (table: pwd_verification)
        * @param params.enrollmentId   The sys_id of this enrollment process
        * @param request               The form request object. Felds in the form can be accessed with
        *                                           request.getParameter('<element-id>')
        * @return boolean telling whether the user was successfully enrolled
        * The following information should be added to the state of the enrollment process
        *     gs.getSession().putProperty("result.status",status) - whether the user was successfully enrolled
        *     gs.getSession().putProperty("result.message",message) - an associated message to be returned 
        *             to the UI. Eg. a detailed error message
        *     gs.getSession().putProperty("result.value",value) - custom value associated with the enrollment
        **********/
        processForm:function (params, request) {var verificationId = params.verificationId; var sampleInput = request.getParameter ('sample_input');
     
    	 if (gs.nil (verificationId) || (sampleInput!= 'success')) { return false; }
     
    	 var now_GR = new GlideRecord ('sys_user');
    	now_GR.get (params. userId);
    	now_GR.print ('User:' + now_GR.getValue ('user_name') + ' successfully enrolled'); return true; },
        type: 'SampleEnrollmentProcessor' };

    Categoria de inclusão de script do "processador do formulário de identificação"

    Categoria de inclusão de script Descrição Assinatura de método Campos de entrada Campos de saída
    Processador do formulário de identificação Processa uma solicitação do formulário de identificação. processForm(params, request) Parâmetros:
    • params.processId: o sys_id do processo de chamada do Redefinição de senha (tabela: pwd_process).
    • request: o objeto de solicitação do formulário. Os campos no formulário podem ser acessados com request.getParameter('<element-id>'). Use request.getParameter('sysparm_user_id') para obter o ID do usuário que foi informado no formulário.
    Retorna: o sys_id do usuário que corresponde à entrada solicitada. Retorna nulo, se nenhum usuário for encontrado.

    Este exemplo tenta identificar o usuário na tabela sys_user de acordo com um nome de usuário enviado do formulário de identificação. O código estaria contido no campo Script de um script de extensão chamado PwdIdentifyViaUsername:

    var PwdIdentifyViaUsername = Class.create ();
    PwdIdentifyViaUsername. prototype = {
        category: 'password_reset.extension.identification_form_processor', // DO NOT REMOVE THIS LINE!
     
        initialize: function () { },
     
       /**********
       * Process the identification form request, and returns the user's sys_id. If user was not identified return null.
       *
       * @param params.processId   The sys_id of the calling Redefinição de senha process (table: pwd_process)
       * @param request            The form request object. fields in the form can be accessed with
       *  request.getParameter('<element-id>')
       *  Supported request parameters: sysparm_user_id - the user identifier value entered in the form                       
       * @return The sys_id of the user that corresponds to the requested input; 
       *  if no user was found, null should be returned
       **********/
       processForm: function (params, request) {var processId = params. processId; var sysparm_user_id = request.getParameter ('sysparm_user_id');
          now_GR = new GlideRecord ('sys_user') ;
          now_GR.addQuery ('user_name', sysparm_user_id) ;
          now_GR.query (); if (!now_GR.next ()) {return null; } return now_GR.sys_id;},
     
        type:'PwdIdentifyViaUsername' }

    Categoria de inclusão de script do "gerador de senha"

    Categoria de inclusão de script Descrição Assinatura de método Campos de entrada Campos de saída
    Gerador de senha Retorna uma senha gerada automaticamente. process(params) Parâmetros: params.processId: o sys_id do processo de chamada do Redefinição de senha (tabela: pwd_process). Retorna: (cadeia de caracteres) uma senha gerada automaticamente.

    Este exemplo gera aleatoriamente uma senha de uma palavra base e números. A palavra base é selecionada dependendo do armazenamento de credenciais. O código estaria contido no campo Script de um script de extensão chamado SamplePasswordGenerator:

    var SamplePasswordGenerator = Class.create ();
    SamplePasswordGenerator. prototype = {
      category: 'password_reset.extension.password_generator', // DO NOT REMOVE THIS LINE!
     
       /**********
       * Returns an auto-generated string password.
       * This sample randomly generates 4 digits to add to the password.
       * 
       * @param params.credentialStoreId The sys_id of the target Redefinição de senha credential store to generate 
       *  a password for (table: pwd_cred_store)
       * @return An auto-generated string password
       **********/
      process:function (params) { var basePassword ;
     
    	 var now_GR = new GlideRecord ('pwd_cred_store');
    	now_GR.addQuery ('name', 'Local ServiceNow Instance');
    	now_GR.query (); if (now_GR.next ()) { if (params.credentialStoreId = now_GR.getValue ('sys_id'))
    			basePassword = "Password"; else
    			basePassword = "Dorwssap"; } return this. generateSimple (basePassword); },
     
      generateSimple:function (base) {var pwd = base; var numbers = '0123456789'; var length = 4;
     
         for (var i  = 0 , n  = numbers. length ; i  < length ; i ++) {
            pwd += numbers.charAt (Math.floor (Math.random () * n) + 1); } return pwd;}, 
     
      type:'SamplePasswordGenerator'} ;

    Categoria de inclusão de script de "Pós-redefinição"

    Categoria de inclusão de script Descrição Assinatura de método Campos de entrada Campos de saída
    Pós-redefinição Realiza operações adicionais após a conclusão do processo do Redefinição de senha. process(params) Parâmetros:
    • params.resetRequestId: o sys_id do processo de chamada do Redefinição de senha (tabela: pwd_process).
    • params.wfSuccess: um sinalizador que indica se o fluxo de trabalho foi concluído com sucesso. Verdadeiro se, e somente se, for bem-sucedido.
    Retorna: vazio

    Este exemplo adiciona solicitações de redefinição com falha ao log do sistema. O código estaria contido no campo Script de um script de extensão chamado PwdPostProcessor':

    var PwdPostProcessor = Class.create ();
     
    PwdPostProcessor. prototype = {
        category: 'password_reset.extension.post_reset_script', // DO NOT REMOVE THIS LINE!
     
        initialize:function () { },
     
         /**********
         * Execute custom actions after the Redefinição de senha process has completed.
        * 
        * @param params.resetRequestId The sys_id of the current Redefinição de senha request (table: pwd_reset_request)
        * @param params.wfSuccess      A flag indicating if the workflow completed sucessfully. 
        *  True if (and only if) successful.
        * @return no return value
        **********/
        process: function (params) {if (!params. wfSuccess) {
               now_GS.log ('[PwdPostProcessor.process] failure post processing for request [' + params. resetRequestId + ']'); }
     
             // We could place actions here that we always want executed return; },
     
        type:'PwdPostProcessor' }

    Categoria de inclusão de script da "pesquisa de conta de usuário"

    Categoria de inclusão de script Descrição Assinatura de método Campos de entrada Campos de saída
    Pesquisa de conta de usuário Obtém o ID da conta de armazenamento de credenciais de um determinado usuário. process(params) Parâmetros: params.userId: o sys_id do usuário que está sendo verificado (tabela: sys_user). Retorna: (cadeia de caracteres) o ID da conta de armazenamento de credenciais de um determinado usuário.

    Este exemplo obtém a conta de armazenamento de credenciais de um usuário. O código estaria contido no campo Script de um script de extensão chamado SampleUserAccountLookupExtension:

    var SampleUserAccountLookupExtension = Class.create ();
    SampleUserAccountLookupExtension. prototype = {
      category:'password_reset.extension.user_account_lookup', // DO NOT REMOVE THIS LINE!
     
       /**********
      * Returns the credential store account id for a given user.
      * This sample echoes the user_id supplied as the credential store account id for that user.
      * 
      * @param params.userId  The sys_id of the user being checked (table: sys_user)
      * @return               The credential store account id (string) for a given user
      **********/
      process:function (params) {return params.userId;},
     
      type:'SampleUserAccountLookupExtension' }

    Categoria de inclusão de script do "processador do formulário de verificação"

    Categoria de inclusão de script Descrição Assinatura de método Campos de entrada Campos de saída
    Processador do formulário de verificação Processa uma solicitação do formulário de verificação e indica se o usuário foi verificado ou não. processForm(params, request) Parâmetros:
    • params.resetRequestId: o sys_id da solicitação atual do Redefinição de senha (tabela: pwd_reset_request).
    • params.userId: o sys_id do usuário a ser verificado (tabela: sys_user).
    • params.verificationId: o sys_id da verificação a ser processada (tabela: pwd_verification).
    • request: o objeto de solicitação do formulário. Os campos no formulário podem ser acessados com request.getParameter('<element-id>').
    Retorna: (booliano) verdadeiro, se o usuário foi verificado; caso contrário, falso.

    Este exemplo mostra um processador de verificação que retorna verdadeiro somente se o usuário enviou ok no campo de entrada; caso contrário, ele retorna como falso. O código estaria contido no campo Script de um script de extensão chamado SampleVerificationFormProcessor:

    var SampleVerificationFormProcessor = Class.create ();
    SampleVerificationFormProcessor.prototype = {
      category:'password_reset.extension.verification_form_processor', // DO NOT REMOVE THIS LINE!
     
       /**********
       * Process the verification form request, and return whether the user was successfully verified.
       * This is a sample verification processor returns true only if the user sent "ok" in the input field; 
       * otherwise, it returns false.
       * 
       * @param params.resetRequestId The sys_id of the current Redefinição de senha request (table: pwd_reset_request)
       * @param params.userId         The sys_id of the user trying to be verified (table: sys_user)
       * @param params.verificationId The sys_id of the verification to be processed (table: pwd_verification)
       * @param request               The form request object. Fields in the form can be accessed with
       * request.getParameter('<element-id>')
       * @return Boolean indicating whether the user is successfully verified
       **********/
      processForm:function (params, request) {if (request.getParameter ("sysparm_simple_input") == "ok") return true; else return false; },
     
      type:'SampleVerificationFormProcessor'};