Initializing a session for the SmartFramework Authorization subsystem
The following code demonstrates how a session can be initialized programatically so that the autorization API's will function properly. The code might be used using (Unit-)Tests, data imports or similar batch routines.
/* *************************** Definitions ************************** */
ROUTINE-LEVEL ON ERROR UNDO, THROW.
USING Consultingwerk.Framework.Session.* FROM PROPATH .
USING Consultingwerk.OERA.* FROM PROPATH .
USING Consultingwerk.SmartFramework.Authentication.* FROM PROPATH .
USING Consultingwerk.SmartFramework.System.* FROM PROPATH .
USING Progress.Lang.* FROM PROPATH .
{Consultingwerk/SmartFramework/Authorization/ttSecurityItemKeys.i}
DEFINE VARIABLE oLoginCompany AS LoginCompanyDatasetModel NO-UNDO .
DEFINE VARIABLE oUser AS UserDatasetModel NO-UNDO .
DEFINE VARIABLE oGetGroupsParameter AS GetUserGroupAssignmentsParameter NO-UNDO .
DEFINE VARIABLE hDataset AS HANDLE NO-UNDO .
/* *************************** Main Block *************************** */
oLoginCompany = NEW LoginCompanyDatasetModel() .
oUser = NEW UserDatasetModel() .
oLoginCompany:SmartLoginCompany:Filter:LoginCompanyShort:EQ("Consultingwerk"):Run() .
IF NOT oLoginCompany:SmartLoginCompany:Available THEN
UNDO, THROW NEW AppError ("Invalid login company.", 0) .
oUser:SmartUser:Filter:UserName:EQ("mikefe"):Run() .
IF NOT oUser:SmartUser:Available THEN
UNDO, THROW NEW AppError ("Invalid user.", 0) .
ASSIGN SessionManager:LoginCompanyKey = oLoginCompany:SmartLoginCompany:LoginCompanyGuid
SessionManager:LoginCompanyName = oLoginCompany:SmartLoginCompany:LoginCompanyName
SessionManager:UserName = oUser:SmartUser:UserName
SessionManager:UserKey = oUser:SmartUser:UserGuid .
oGetGroupsParameter = NEW GetUserGroupAssignmentsParameter (SessionManager:UserName,
SessionManager:LoginCompanyKey) .
ServiceInterface:InvokeMethod ("Consultingwerk.SmartFramework.Authentication.UserBusinessEntity":U,
"GetUserGroupAssignments":U,
INPUT-OUTPUT DATASET-HANDLE hDataset,
oGetGroupsParameter) .
ASSIGN SessionManager:UserGroupKeys = oGetGroupsParameter:GroupGuids
SessionManager:UserGroupNames = oGetGroupsParameter:GroupNames .