SphRisque: how to add and use specific rights?
Mar
14
Written by:
3/14/2014 6:10 PM
On Sophis Risque and Value, it is possible to add specific user rights, by adding tabs on user/group configuration. Tabs and fields are added using the Oracle table USER_RIGHT_TABLE. On previous versions of Sophis, such rights were defined using C++ toolkit and the obsolete class CSRUserRights.
For example, this query adds a specific right, that can be selected after in the user/group configuration.
insert into user_right_table(name,category,internal_right,right_type,right,idx,comments) select 'SwapOne Save','MyBank',0,2,-1,max(idx)+1,'SwapOne rights' from user_right_table;
Once defined and configured on some users, it can be used, for example on CSRInstrumentAction::VoteForModification, using the following code:
CSRUserRights _user;
bool _canSave = _user.GetIdent()==1;
if(!_canSave) // all rights on Manager
{
const char* _rightName = "SwapOne Save";
eRightStatusType _right(_user.GetUserDefRight(_rightName));
if(_right==rsSameAsGroup)
{
CSRUserRights _group(_user.GetGroupID());
_group.LoadDetails();
_right = _group.GetUserDefRight(_rightName);
}
if(_right==rsEnable)
_canSave = true;
}
if(!_canSave)
throw(VoteException("Modifications on Swap One instruments are forbidden"));