1. Accueil
  2. /
  3. Guide Admin
  4. /
  5. Portail Client
  6. /
  7. Guide Administrateur du P...

Guide Administrateur du Portail Client

Prérequis côté Cirrus Shield : 

Les modèles d’emails utilisés doivent exister dans l’objet « Modèles d’emails ». 

  • Vérifier les éléments suivants : 
  1. Le groupe Support Group existe.S’il n’existe pas: 

Cliquer sur configuration 

Puis cliquer sur gestion des utilisateurs 
 

Ensuite cliquer sur groupes puis sur nouveau :   

Remplir les informations comme dans l’image ci-dessous 

Vérifier que les utilisateurs nécessaires sont bien assignés à ce groupe.

2  .Le profil Support client est bien créé. 

3. Le bouton Activer le portail client est ajouté sur l’objet Contact.

Si le bouton n’existe pas : 

  • Partir dans configuration, puis cliquer sur objets, trouver l’objet contact et  cliquer sur détails

Cliquer sur bouton personnalisées puis sur nouveau :

Remplir les informations comme l’image ci-dessous: 

Le code la fonction: 

ar script = document.createElement("script"); 

script.src = "https://apps.cirrus-shield.net/resources/sweetalert2/sweetalert2.min.js"; 

document.head.appendChild(script); 

  

var link = document.createElement("link"); 

link.rel = "stylesheet"; 

link.href = "https://apps.cirrus-shield.net/resources/sweetalert2/sweetalert2.min.css"; 

document.head.appendChild(link); 

  

function ActivateContactUser() { 

    debugger; // Removes this line if you want to stop the code from pausing in the inspector 

     

    let OrganizationId = btoa(GetOrganizationInfo().Id); 

    let currentUserGuid = GetLoggedInUserGUID(); 

    let objUser = GetDataByID(currentUserGuid, "User", "Language"); 

    let UserLanguage = objUser.Language; 

    let thisGuid = GetRecordGUID(); 

    let Contact = GetDataByID(thisGuid,"Contact","Id,Account, Name,Email,First_Name,Last_Name,PortalUser"); 

    let userContact = GetData(`Select Id, Name from User Where Email = ${Contact.Email}`) 

    let password = GenPassword(); 

    let user = "ACP_" + Contact.Email; 

    let MailModel = GetData("Select Body,CC,BCC,Subject,To From Email_Template Where Name = 'Activation portail support'").Email_Template[0] 

    MailModel.Body=MailModel.Body.replace("{!UserPlaceholder}",user) 

    MailModel.Body=MailModel.Body.replace("{!PasswordPlaceholder}",password) 

  

    // 4. Run Error Handling 

    if (!ErrorHandling()) { 

        return; 

    } 

  

    // 5. Get Account and Position Data 

   let Account = GetDataByID(Contact.Account,"Account","Id,Name"); 

    let position = GetData(`Select Id, Name from UserPosition Where Name = ${Account.Name}`) 

     

    var parentPositionId = "3779523246987151657"; 

    let positionId = ""; 

  

    positionCheck(); 

  

     

    var createdUser = CreateUser(); 

    if (createdUser == false) { return; } 

    createdUser = createdUser.RecordGUID 

    UpdateContactAndUser(createdUser) 

    SendMailToContact() 

    successMessage() 

  

  

    // --- Helper Functions --- 

  

    function SendMailToContact() { 

        var jsonString = []; 

        try { 

            jsonString.push({ 

                "objectName": "Contact", 

                "recordId": thisGuid, 

                "from": "Org", 

                "subject": MailModel.Subject, 

                "to": Contact.Email, 

                "cc": "ali.mansour5@aliston.fr", 

                "bcc": "", 

                "replyTo": "", 

                "CurrentUserId": GetLoggedInUserGUID(), 

                "OrganizationId": GetOrganizationInfo().Id, 

                "body": { 

                    "emailBody": MailModel.Body, 

                    "attachments": [], 

                    "Templates": [] 

                } 

            }); 

        } catch (e) { 

            console.error(e); 

        } 

        return generateDocsAndSendEmail("https://beta.cirrus-shield.net", jsonString); 

    } 

  

    function UpdateContactAndUser(userGUID) { 

         ObjectMap = [{ 

            "Id": thisGuid, 

            "PortalUser": userGUID, 

        }]; 

         docContact = fillDocMapArray(ObjectMap, "Contact"); 

        RecordShortcutV2("Update", "Contact", "Contact", docContact); 

    } 

  

    function CreateUser() { 

        debugger; 

        ObjectMap = [{ 

            "FirstName": Contact.First_Name, 

            "Username": user, 

            "LastName": Contact.Last_Name, 

            "Email": Contact.Email, 

            "ProfileId": "3779364767659985837", 

            "PositionId":positionId, 

            "Language": UserLanguage, 

            "Password": password 

            // "Formateur":GetRecordGUID() 

        }]; 

        docUser = fillDocMapArray(ObjectMap, "User"); 

        return RecordShortcutV2("Create", "Utilisateur", "User", docUser); 

    } 

  

    function GenPassword() { 

        const chars = "0123456789abcdefghijklmnopqrstuvwxyz!@ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

        const passwordLength = 12; 

        let password = ""; 

        for (var i = 0; i <= passwordLength; i++) { 

            var randomNumber = Math.floor(Math.random() * chars.length); 

            password += chars.substring(randomNumber, randomNumber + 1); 

        } 

        return password; 

    } 

  

    function ErrorHandling() { 

        if (Contact.PortalUser != null && Contact.PortalUser != undefined) { 

            alert("Il existe déjà un utilisateur associé à ce contact."); 

            return false; 

        } 

  

        // FIX: Better check for existing user (checking .User array length) 

        if (userContact && userContact.User && userContact.User.length > 0) { 

            alert("Un utilisateur avec le même email que ce contact existe déjà."); 

            return false; 

        } 

  

        if (Contact.Account == null || Contact.Account == undefined) { 

            alert("Veuillez indiquer le compte"); 

            return false; 

        } 

         

        if (!confirm("Etes-vous sûr(e) de vouloir activer le portail de ce contact ?")) { 

            return false; 

        } 

        return true; 

    } 

  

   function successMessage(){ 

        var urlRecord = "https://beta.cirrus-shield.net/Data/Details/" + thisGuid+ "?objectName="+"Contact" 

        setTimeout(() => { 

            Swal.fire({ 

                icon: 'success', 

                title: `L'utilisateur de ce contact a été créé avec succès`, 

                text: `L'utilisateur de ce contact a été créé avec succès et un mail lui a été envoyé !`, 

                confirmButtonText: `<a href='${urlRecord}' onclick='location=location;'>Rafraichir le contact</a>`, 

                

            }); 

        }, 1000); 

    } 

  

    function generateDocsAndSendEmail(cssServerURL, data) { 

        var url = `https://docxtopdf.cirrus-shield.net/DocxToPDF/GenerateDocsAndSendEmails?CSServerURL=${encodeURIComponent(cssServerURL)}`; 

        var token = GetTokenID(); 

        return new Promise((resolve, reject) => { 

            $.ajax({ 

                url: url, 

                type: "POST", 

                contentType: "application/json", 

                headers: { 

                    "Authorization": `Bearer ${token}` 

                }, 

                data: JSON.stringify(data), 

                success: function(response) { 

                    resolve(true); 

                }, 

                error: function(xhr, status, error) { 

                    console.error(`Error: ${xhr.status} - ${xhr.statusText}`); 

                    resolve(false); 

                } 

            }); 

        }); 


    } 

  

       function positionCheck(){ 

    debugger 

        if(position == null){ 

            var doc = fillDocMapArray([{Name:Account.Name,ShareDataWithPeers:1,ParentPositionId:parentPositionId}],"UserPosition") 

            positionId = RecordShortcutV2("Create","UserPosition","UserPosition",doc).RecordGUID 

        }else{ 

            positionId = position.UserPosition[0].Id 

        } 

    } 

}

Adapter les GUIDs de la position et du profiles dans le code selon votre environnement (CTRL F “PositionId” et “ProfileId”). 

Afin de savoir votre profileId et votre positionId, suivez les étapes suivantes :  

  • Partir vers gestion des utilisateurs, cliquer sur profils (comme précédemment fait) , puis cliquer sur support client 

Le profileId se trouve dans l’URL aprés avoir cliqué sur Support Client . Par exemple : https://beta.cirrus-shield.net/Data/Details/3779364767659985837?objectName=Profile&retAction=Index 

4. Vérifier que vous possédez assez des licences utilisateur portails restantes 

  • Partir vers configuration , cliquer sur organisation , puis licenses 
  1. Vérifier que certains champs  sont présents pour l’objet tickets : 
  • Description (texte) 
  • Compte (Relation de recherche) 
  • Contact (Relation de recherche ) 
  • Contrat de support (Relation de recherche) 
  • Propriétaire du ticket (Multi Relation de Recherche) 
  • Status (Listes de sélections) 
  • Sujet (Liste de sélections) 
  • Type (Liste de sélections) 

Configuration du portail (Administrateur) 

Accès à l’interface de configuration : https://clientportalapi.cirrus-shield.net/fr/config/{OrgId} 

Étapes : 

  1. Entrer le nom d’utilisateur et le mot de passe. 

Cliquer sur « Suivant ». 

3. Sélectionner les éléments à afficher sur le portail selon le besoin :

  1. Configurer les notifications automatiques envoyées aux utilisateurs du groupe Support_group : 
  • Lorsqu’un ticket est créé 
  • Lorsqu’une action est détectée sur un ticket 
  • Lorsqu’une note est ajoutée à un ticket 
  • Lorsqu’un document est ajouté à un ticket 

Cliquer sur Enregistrer la configuration pour sauvegarder. 

Cet article vous a-t-il été utile ? Non Oui

Comment pouvons-nous aider ?