Initializing a session for the SmartFramework Authorization subsystem

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 .