Forum Discussion

mkalla's avatar
mkalla
Ideator I
6 years ago

Restrict Workflow path to one Identity

Hi,

In my work flow I have a stage with several path's, one of them is called "Fast Track Approve"

How can I set so that path only is valid for the CM /Admin identity?

It would have been nice if Aras had possibilities to set permissions/Identities on path,

But it looks like this must be solved by a method.

So I need a method to check user vs identities and then have the method to be run as a pre-method for that path

Regards//Mikael

10 Replies

  • Hi Mikael

    You can use below piece of code to achieve this.

    Step 1: Open Workflow of ECO

    Step 2: Click on path "Fast Track Approve"

    Step 3: Add below method as Pre Methods event

    //Method Type : Server Side (C#)

    Innovator inn = getInnovator();
    //Allowed Identities (CM and Adminstrators Identity ID)
    string allowedIdentity = "F6624E9AE5504958A84E4B6A5831298B,2618D6F5A90949BAA7E920D1B04C7EE1";
    string path = this.getProperty("name");
    string userID = inn.getUserID();
    Item alias = inn.newItem("Alias", "get");
    alias.setProperty("source_id", userID);
    alias.setAttribute("select", "related_id(id)");
    alias = alias.apply();
    if (alias.isError()) {
    return alias;
    }
    string aliasId = alias.getProperty("related_id");
    string whereCondition = "[Member].related_id=\'" + aliasId + "\'";
    Item IdentityCheck = inn.newItem("Member", "get");
    IdentityCheck.setAttribute("where", whereCondition);
    IdentityCheck.setAttribute("select", "id");
    IdentityCheck.setProperty("source_id", allowedIdentity);
    IdentityCheck.setPropertyCondition("source_id", "in");
    IdentityCheck = IdentityCheck.apply();
    if (IdentityCheck.isError()) {
    return inn.newError("Only Members of CM and Administrators Identity can select this Path. Please reselect the Path");
    }
    return this;

    Thank You

    Gopikrishnan R

    • mkalla's avatar
      mkalla
      Ideator I

      Thanks Gopikrishnan, I will test it

      //Mikael

    • mkalla's avatar
      mkalla
      Ideator I

      Hi,

      Sorry, but didn't work for me

      In the Stage for Fast Track Approve I have two identity groups assigned
      "Group1" with User A and User B

      "Group2" with UserC

      UserA, just a standard user, not CM or Admin,
      UserA claims the stage and when UserA selects  "Fast Track approve",
      It works for him and ECO is forwarded

      It should have according to the method being stopped

      Any idea why UserA was able to forward though fast track approve?

      • Gopikrishnan's avatar
        Gopikrishnan
        Ideator I

        Hi Mikael

        I tested your scenario and able to block user from vote. Can you check below case

        1. Is this user member of CM / Administrator identity ?

        2. Is this user member of any identity which is member of CM / Administrator identity ?

        Example : user is member Group A and Group A is member of Administrator

        3. Is the ID configured for CM and Administrator identity correct ?

        4. If so, then can you debug this method and check ?

        if (System.Diagnostics.Debugger.Launch()) System.Diagnostics.Debugger.Break();
        Innovator inn = getInnovator();
        //Allowed Identities (CM and Adminstrators Identity ID)
        string allowedIdentity = "F6624E9AE5504958A84E4B6A5831298B,2618D6F5A90949BAA7E920D1B04C7EE1";
        string userID = inn.getUserID();
        Item alias = inn.newItem("Alias", "get");
        alias.setProperty("source_id", userID);
        alias.setAttribute("select", "related_id(id)");
        alias = alias.apply();
        if (alias.isError()) {
        return alias;
        }
        string aliasId = alias.getProperty("related_id");
        string whereCondition = "[Member].related_id=\'" + aliasId + "\'";
        Item IdentityCheck = inn.newItem("Member", "get");
        IdentityCheck.setAttribute("where", whereCondition);
        IdentityCheck.setAttribute("select", "id");
        IdentityCheck.setProperty("source_id", allowedIdentity);
        IdentityCheck.setPropertyCondition("source_id", "in");
        IdentityCheck = IdentityCheck.apply();
        if (IdentityCheck.isError()) {
        return inn.newError("Only Members of CM and Administrators Identity can select this Path. Please reselect the Path");
        }
        return this;