Showing posts with label User Based Security Roles. Show all posts
Showing posts with label User Based Security Roles. Show all posts

Tuesday, 29 May 2018

User Based Security Roles,Duties,Privileges in Ax 2012

                   User Base Security Roles,Duties,Privileges

public class FormRun extends ObjectRun
{
    SysLookupMultiSelectCtrl        selectuser;
}
-----------------------------------
public void init()
{
    DI_UserSecurity                 dI_UserSecurities;

    Query                           query;
    QueryBuildDataSource            qbds;
    QueryBuildFieldList             qbfl;

    query = new Query();
    super();

    qbds  = query.addDataSource(tableNum(UserInfo));
    qbds.fields().dynamic(NoYes::Yes);
    qbfl  =   qbds.fields().addField(fieldNum(UserInfo, id));
    selectuser =  SysLookupMultiSelectCtrl::constructWithQuery(element,UserID,query);

    delete_from dI_UserSecurities;
}
-------------------------------------------
void clicked()
{
    DI_UserSecurity             userSecurity;
    SecurityRole                securityRole,securityRole1;
    SecurityUserRole            securityUserRole;
    SecurityRoleTaskGrant       securityRoleTaskGrant;
    SecurityTask                securityTask,securityTask1;
    securitySubTask             securitySubTask;
    SecuritysubRole             SecuritysubRole;
    SysUserInfo                 sysUserInfo;

    int                         i;
    str 100                     dutyName;
    container                   con;
    Description                 value;
    super();

    delete_from userSecurity;

    con = selectuser.getSelectedFieldValues();
    if(UserId.valueStr() != "")
    {
      for (i = 1; i <= conLen(con); i++)
        {
           userSecurity.clear();
           value = conPeek(con,i);
           while select RecId,Name from securityRole
                    join User,SecurityRole from securityUserRole
                         where securityRole.RecId == SecurityUserRole.SecurityRole
                         && SecurityUserRole.User == value
            {
               if(securityRole.RecId)
               {
                 while select SecurityRole,SecurityTask from  securityRoleTaskGrant
                         where securityRoleTaskGrant.SecurityRole == securityRole.RecId
                    join securityTask
                         where securityTask.RecId == securityRoleTaskGrant.SecurityTask
                             && securityTask.Type == SecurityTaskType::Duty
                    join SecurityTask,SecuritySubTask from securitySubTask
                         where securitySubTask.SecurityTask == securityTask.RecId
                    join securityTask1
                         where  securityTask1.RecId == securitySubTask.SecuritySubTask
                    {
                        userSecurity.DI_UserId      = value;
                        userSecurity.DI_Role        = securityRole.Name;
                        userSecurity.DI_Duty        = SysLabel::labelId2String(securityTask.Name);
                        userSecurity.DI_Privilege   = SysLabel::labelId2String(securityTask1.Name);
                        userSecurity.insert();
                    }
                }
                if(userSecurity.DI_Duty == "" && userSecurity.DI_Privilege == "")
                {
                    userSecurity.DI_UserId      = value;
                    userSecurity.DI_Role        = securityRole.Name;
                    userSecurity.DI_Duty        = SysLabel::labelId2String(securityTask.Name);
                    userSecurity.DI_Privilege   = SysLabel::labelId2String(securityTask1.Name);
                    userSecurity.insert();
                }
             }
        }
    }
    else
    {
        while select Id from sysUserInfo
        {
            if(sysUserInfo.Id)
            {
              userSecurity.clear();
              while select RecId,Name from securityRole
                    join User,SecurityRole from securityUserRole
                         where securityRole.RecId == SecurityUserRole.SecurityRole
                         && SecurityUserRole.User == sysUserInfo.Id
              {
               if(securityRole.RecId)
               {
                 while select SecurityRole,SecurityTask from  securityRoleTaskGrant
                         where securityRoleTaskGrant.SecurityRole == securityRole.RecId
                    join securityTask
                         where securityTask.RecId == securityRoleTaskGrant.SecurityTask
                             && securityTask.Type == SecurityTaskType::Duty
                    join SecurityTask,SecuritySubTask from securitySubTask
                         where securitySubTask.SecurityTask == securityTask.RecId
                    join securityTask1
                         where  securityTask1.RecId == securitySubTask.SecuritySubTask
                        {
                            userSecurity.DI_UserId      = sysUserInfo.Id;
                            userSecurity.DI_Role        = securityRole.Name;
                            userSecurity.DI_Duty        = SysLabel::labelId2String(securityTask.Name);
                            userSecurity.DI_Privilege   = SysLabel::labelId2String(securityTask1.Name);
                            userSecurity.insert();
                        }
                    }
                    if(userSecurity.DI_Duty == "" && userSecurity.DI_Privilege == "")
                    {
                        userSecurity.DI_UserId      = sysUserInfo.Id;
                        userSecurity.DI_Role        = securityRole.Name;
                        userSecurity.DI_Duty        = SysLabel::labelId2String(securityTask.Name);
                        userSecurity.DI_Privilege   = SysLabel::labelId2String(securityTask1.Name);
                        userSecurity.insert();

                    }
                }
            }
        }
    }
    DI_UserSecurity_ds.research();
}