Company Level Security Restriction

Author
Messages
Greg Moeller
Veteran Member
Posts: 1498
Veteran Member
    We've been tasked to implement company level security to an already existing LSF9 security setup.  We are taking on a different hospital, and now need their data to be separate from ours.

    What's the best way to do such a feat?  I'd prefer not to have to go into each and every security class and write more rules.

    Any way to use the CompanyControl attribute of RM to do this?  Who's willing to share an example?

    Thanks in advance,
    -Greg
    Jimmy Chiu
    Veteran Member
    Posts: 641
    Veteran Member
      CompanyControl is just an multi-value attribute you can use to "compare" against forms/tables/elements/element groups to grant access or not. So I am afraid you still need to go in secClass to add/modify the rules.

      typically for table:
      if(user.attributeContains('CompanyControl',lztrim(table.COMPANY)))
      'I,'
      else
      'NO_ACCESS,'
      Greg Moeller
      Veteran Member
      Posts: 1498
      Veteran Member
        Thanks, Jimmy... I was afraid you were going to say that! We have 540+ security classes and 5500+ rules. This is going to take us a while, then.

        I was hoping that there was a simpler (global) solution to company level security for both the screens and the tables.
        John Crudele
        Veteran Member
        Posts: 50
        Veteran Member
          Greg

          What created a structure is resource manager
          Then made it an attribute on the users profile and assigned the users company to the attribute

          Then we created a security class with a rule on the company element

          if(isStructNodeTitleAbove('PlatformStructure',COMPANY,user.getAttribute('Platform')))
             'ALL_ACCESS,'
          else
             'NO_ACCESS,'

          We assigned the security class to a role then assigned the role to everybody
          Greg Moeller
          Veteran Member
          Posts: 1498
          Veteran Member
            So, John, when you assign this role to everyone, does that fix the other existing roles that may have access wide open to company.. permission for every company?
            John Henley
            Senior Member
            Posts: 3348
            Senior Member
              Since with LS, "most restrictive wins", having a "global" rule like that should achieve your goal. You just have to make sure it is include in a role that is assigned to every user.
              Thanks for using the LawsonGuru.com forums!
              John
              Greg Moeller
              Veteran Member
              Posts: 1498
              Veteran Member
                John: I thought it was "most permissive wins" ?
                John Henley
                Senior Member
                Posts: 3348
                Senior Member
                  Man, I blew that one, didn't I? You are correct: the first rule encountered that grants access ends the rules processing.
                  Thanks for using the LawsonGuru.com forums!
                  John
                  John Crudele
                  Veteran Member
                  Posts: 50
                  Veteran Member
                    Greg

                    We set-up a role called "company role" and assign it to whoever needs to have their access limited by company. If you have full access to all companies we do not assign the role.

                    Regards
                    JC
                    Greg Moeller
                    Veteran Member
                    Posts: 1498
                    Veteran Member
                      So, John. What do you have in the "company role"?
                      John Crudele
                      Veteran Member
                      Posts: 50
                      Veteran Member
                        Greg

                        1) we created our company structure in resource manager
                        2) Created an attribute on the user profile and entered in the company information
                        3) created a security class called CompanySecClass with a conditional rule on the company element
                        if(isStructNodeTitleAbove('PlatformStructure',COMPANY,user.getAttribute('Platform')))
                           'ALL_ACCESS,'
                        else
                           'NO_ACCESS,'
                        4) Created a security profile calle CompanyRole and assigned the above security class to it
                        5) Add the CompanyROle security profile to the individual users profile

                        Regards
                        JC
                        Greg Moeller
                        Veteran Member
                        Posts: 1498
                        Veteran Member
                          JC, Thanks! This helps, but since I've never done anything like this (except in class 4 years ago) I'd appreciate more help. Would it be possible for you to send me a screen shot of your structure? That way I may be able to wrap my brain around this quicker. If you cannot, I understand.
                          John Crudele
                          Veteran Member
                          Posts: 50
                          Veteran Member
                            Greg

                            I am finishing up our LSO install and training. i will send you screenshots on Thursday
                            Greg Moeller
                            Veteran Member
                            Posts: 1498
                            Veteran Member
                              That would be great, John. Thanks!
                              Greg Moeller
                              Veteran Member
                              Posts: 1498
                              Veteran Member
                                John: A screenshot would be appreciated.
                                ---