Class SoPrincipal
Summary description for SoPrincipal.
Implements
Namespace: SuperOffice.Security.Principal
Assembly: SoCore.dll
Syntax
public abstract class SoPrincipal : MarshalByRefObject, IPrincipal
Constructors
SoPrincipal(IEnumerable<ClaimsIdentity>)
Default constructor for the identity.
Declaration
protected SoPrincipal(IEnumerable<ClaimsIdentity> identities)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<ClaimsIdentity> | identities |
Properties
Associate
Associate name (e.g. logon name) for the user
Declaration
public string Associate { get; }
Property Value
Type | Description |
---|---|
String |
AssociateId
AssociateId for the user.
Declaration
public int AssociateId { get; }
Property Value
Type | Description |
---|---|
Int32 |
BusinessId
BusinessIdx for the company that the user belongs to.
Declaration
public int BusinessId { get; }
Property Value
Type | Description |
---|---|
Int32 |
CanCreateExternalPerson
Can this user create and manage external persons
Declaration
public bool CanCreateExternalPerson { get; }
Property Value
Type | Description |
---|---|
Boolean |
Remarks
External persons (e.g. UserType of ExternalPerson) can only manage external persons belonging to the same contact (e.g. company). Hence, only UserType of Employee and System can manage external persons on all companies in the database.
CategoryId
CategoryIdx of the company that the user belongs to.
Declaration
public int CategoryId { get; }
Property Value
Type | Description |
---|---|
Int32 |
ContactId
Company of the associate's person
Declaration
public int ContactId { get; }
Property Value
Type | Description |
---|---|
Int32 |
ContactOwner
Owner (AssocaiteId) of the company that the user belongs to.
Declaration
public int ContactOwner { get; }
Property Value
Type | Description |
---|---|
Int32 |
CountryId
CountryId for the user, from the person record. Note that this is not the users' "home country" (which can be overriden by a preference), use the HomeCountryId to get that id.
Declaration
public int CountryId { get; }
Property Value
Type | Description |
---|---|
Int32 |
CRM5Secret
Secret used with type UserType CRM5 in SoCredentials. Only valid 24 hours after it was created.
Declaration
public string CRM5Secret { get; }
Property Value
Type | Description |
---|---|
String |
DatabaseContextIdentifier
The identifier of the users database context.
Declaration
public string DatabaseContextIdentifier { get; }
Property Value
Type | Description |
---|---|
String |
EjAccessLevel
eJournal user access level
Declaration
public EjAccess EjAccessLevel { get; }
Property Value
Type | Description |
---|---|
EjAccess |
EjUserId
Primary key in eJournal's old user table.
Declaration
public int EjUserId { get; }
Property Value
Type | Description |
---|---|
Int32 |
EjUserStatus
eJournal user status
Declaration
public EjUserStatus EjUserStatus { get; }
Property Value
Type | Description |
---|---|
EjUserStatus |
EMailAddress
The Person e-mail address if the associate is a person. Use IsPerson to check
Declaration
public string EMailAddress { get; }
Property Value
Type | Description |
---|---|
String |
FullName
The Person full name if the associate is a person. Use IsPerson to check
Declaration
public string FullName { get; }
Property Value
Type | Description |
---|---|
String |
GroupId
Associate's group_idx
Declaration
public int GroupId { get; }
Property Value
Type | Description |
---|---|
Int32 |
HomeCountryId
Country id for the user's home country. This is the default country id when creating new items. In contrast to CountryId, which only looks at the person record, this property also takes into account the OwnCountry preference.
Declaration
public int HomeCountryId { get; }
Property Value
Type | Description |
---|---|
Int32 |
Identities
Summary description for SoPrincipal.
Declaration
public IEnumerable<ClaimsIdentity> Identities { get; }
Property Value
Type | Description |
---|---|
IEnumerable<ClaimsIdentity> |
Identity
Identity for the principal
Declaration
public abstract ISoIdentity Identity { get; }
Property Value
Type | Description |
---|---|
ISoIdentity |
IsPerson
Is this associate a person, and not a resource?
Declaration
public bool IsPerson { get; }
Property Value
Type | Description |
---|---|
Boolean |
IsSaintEnabled
Summary description for SoPrincipal.
Declaration
public bool IsSaintEnabled { get; }
Property Value
Type | Description |
---|---|
Boolean |
License
License granted to the site and user.
Declaration
public ProductLicense License { get; }
Property Value
Type | Description |
---|---|
ProductLicense |
PersonId
Associate's person id
Declaration
public int PersonId { get; }
Property Value
Type | Description |
---|---|
Int32 |
RoleDescription
Description (e.g. tooltip) for the users role
Declaration
public string RoleDescription { get; }
Property Value
Type | Description |
---|---|
String |
RoleId
Id of the users role
Declaration
public int RoleId { get; }
Property Value
Type | Description |
---|---|
Int32 |
RoleName
Name of the users role
Declaration
public string RoleName { get; }
Property Value
Type | Description |
---|---|
String |
RoleType
Type of user.
Declaration
public RoleType RoleType { get; }
Property Value
Type | Description |
---|---|
RoleType |
SecondaryGroups
Secondary user groups
Declaration
public int[] SecondaryGroups { get; }
Property Value
Type | Description |
---|---|
Int32[] |
State
State of the Authorization
Declaration
public AuthorizationState State { get; protected set; }
Property Value
Type | Description |
---|---|
AuthorizationState |
TimeZone
TimeZone selected by user in Diary. The selection is available only when BaseTzLocation is set (timezone handling ON).
Only a few date fields on appointment/recurrencerule are influenced by this setting, see
Declaration
public int TimeZone { get; set; }
Property Value
Type | Description |
---|---|
Int32 |
UserName
UserName on associatetable
Declaration
public string UserName { get; }
Property Value
Type | Description |
---|---|
String |
UserType
Type of user
Declaration
public UserType UserType { get; }
Property Value
Type | Description |
---|---|
UserType |
Methods
Authenticate()
Authenticates the Principal
Declaration
public abstract void Authenticate()
CacheKeyExist(String)
Check for key in cache
Declaration
public virtual bool CacheKeyExist(string key)
Parameters
Type | Name | Description |
---|---|---|
String | key |
Returns
Type | Description |
---|---|
Boolean |
ClearCache()
Clear all items from the session cache;
Declaration
public virtual void ClearCache()
GetAccessToken(String, Boolean)
Create a new access token for a given clientSecret (aka ApplicationToken), including CustSvc session info.
Declaration
public abstract string GetAccessToken(string clientSecret, bool includeCsSession)
Parameters
Type | Name | Description |
---|---|---|
String | clientSecret | The app's client secret (the application token) - can be null or "" for on-site. Required for online |
Boolean | includeCsSession | Whether to include CustSvc session details |
Returns
Type | Description |
---|---|
String | A fresh "8A:xyz.blabla==" access token. |
GetCachedItem(String)
Get a value from the session cache.
Declaration
public virtual object GetCachedItem(string key)
Parameters
Type | Name | Description |
---|---|---|
String | key | Key to the item in the cache. |
Returns
Type | Description |
---|---|
Object | If there is a valid item in the cache, it is returned. 'null' (VB Nothing) is returned if there is no valid value. |
GetFunctionRights()
Get all the functional rights for the user's role.
Declaration
public virtual string[] GetFunctionRights()
Returns
Type | Description |
---|---|
String[] | Functional rights for the user's role. |
GetGrantedLicenses()
Summary description for SoPrincipal.
Declaration
public List<GrantedModuleLicense> GetGrantedLicenses()
Returns
Type | Description |
---|---|
List<GrantedModuleLicense> |
GetGrantedLicensesAsString()
Get commaseparated string of granted licenses.
Declaration
public string GetGrantedLicensesAsString()
Returns
Type | Description |
---|---|
String | Commaseperated string of granted licenses for current user |
GetLicense(String)
Get details of a granted license. Use SoLicenseNames to avoid misspelling.
Declaration
public GrantedModuleLicense GetLicense(string fullName)
Parameters
Type | Name | Description |
---|---|---|
String | fullName | Full name of the license formatted like [OwnerName].[LicenseName]. |
Returns
Type | Description |
---|---|
GrantedModuleLicense | Details of a granted license. Null (VB Nothing) is returned if the named license has not been granted. |
GetLicense(String, String)
Get details of a granted license. Use SoLicenseNames to avoid misspelling.
Declaration
public GrantedModuleLicense GetLicense(string owner, string module)
Parameters
Type | Name | Description |
---|---|---|
String | owner | Name of the module owner. |
String | module | Name of the module license |
Returns
Type | Description |
---|---|
GrantedModuleLicense | Details of a granted license. Null (VB Nothing) is returned if the named license has not been granted. |
GetPrincipalCarrier()
Private SuperOffice function - do not use! Get the SoPrincipalCarrier from the SoPrincipal
Declaration
public SoPrincipalCarrier GetPrincipalCarrier()
Returns
Type | Description |
---|---|
SoPrincipalCarrier | Instance of the SoPrincipalCarrier held by the SoPrincipal. |
Remarks
This method is protected with code access security. It is only to be used by SuperOffice!
Exceptions
Type | Condition |
---|---|
SecurityException | Thrown if the caller's if the callstack contains assemblies not signed with the SuperOffice strong name. For SuperOffice developers: When calling this method, it is important that an assert on the SoStrongName permission is called prior to accessing this method; in order to prevent additional stack walcing beyond the calling method. |
GetSafeCredentials()
Obtain a set of credentials that are safe to use accross mix-mode authentication scenarios.
Declaration
public abstract SoCredentials GetSafeCredentials()
Returns
Type | Description |
---|---|
SoCredentials | Credentials that are safe to use accross mix-mode authentication scenarios |
HasFunctionRight(String)
Check if the user's role has the functional right. Use FunctionRightStrings to avoid misspelling.
Declaration
public virtual bool HasFunctionRight(string functionRightName)
Parameters
Type | Name | Description |
---|---|---|
String | functionRightName | Name of the functional right as returned from the helper class FunctionRightStrings. |
Returns
Type | Description |
---|---|
Boolean | True if the user's role has this right, otherwise false. |
HasLicense(String)
Check if the user has been granted the provided licens.e Use SoLicenseNames to avoid misspelling.
Declaration
public virtual bool HasLicense(string fullName)
Parameters
Type | Name | Description |
---|---|---|
String | fullName | Full name of the license formatted like [OwnerName].[LicenseName]. |
Returns
Type | Description |
---|---|
Boolean | False is returned if this license has not been granted. |
HasLicense(String, String)
Check if the user has been granted the provided license. Use SoLicenseNames to avoid misspelling.
Declaration
public virtual bool HasLicense(string owner, string module)
Parameters
Type | Name | Description |
---|---|---|
String | owner | Name of the module owner. |
String | module | Name of the module license |
Returns
Type | Description |
---|---|
Boolean | False is returned if this license has not been granted. |
IsInCompany(Int32)
Is the accociate a person in this company
Declaration
public virtual bool IsInCompany(int contactId)
Parameters
Type | Name | Description |
---|---|---|
Int32 | contactId | ContactId of the company to check for. |
Returns
Type | Description |
---|---|
Boolean | True if the corrent principal is a person in this company. |
IsInProject(Int32)
Is the principal member of the project.
Declaration
public virtual bool IsInProject(int projectId)
Parameters
Type | Name | Description |
---|---|---|
Int32 | projectId | ProjectId of the project to check that the principal is a member of |
Returns
Type | Description |
---|---|
Boolean | True if the principal is membor of the given project. |
IsInRole(String)
Is the principal (e.g. user) in the given role.
Declaration
public virtual bool IsInRole(string role)
Parameters
Type | Name | Description |
---|---|---|
String | role | The role to check if the user is a member of |
Returns
Type | Description |
---|---|
Boolean | True if the user is member for this role |
IsInSameCompany(Int32)
Is the associate a person in the same company as the given associate
Declaration
public virtual bool IsInSameCompany(int associateId)
Parameters
Type | Name | Description |
---|---|---|
Int32 | associateId | Asssociate id of the person to compare to. |
Returns
Type | Description |
---|---|
Boolean | True if they are in the same company. |
IsInSameGroup(Int32)
Is the associate in the same usergroup as the principal.
Declaration
public virtual bool IsInSameGroup(int associateId)
Parameters
Type | Name | Description |
---|---|---|
Int32 | associateId | AssociateId of the identity to compare to. |
Returns
Type | Description |
---|---|
Boolean | True if the associate is in the suame usergroup as the principal. |
RemoveCachedItem(String)
Deletes a cached value from the session cache
Declaration
public virtual void RemoveCachedItem(string key)
Parameters
Type | Name | Description |
---|---|---|
String | key | Key to the item in the cache |
SetAssociatePassword(String)
Summary description for SoPrincipal.
Declaration
protected void SetAssociatePassword(string password)
Parameters
Type | Name | Description |
---|---|---|
String | password |
SetCachedItem(String, Object, Double)
Add a value to the session cache.
Declaration
public virtual void SetCachedItem(string key, object cacheValue, double timeout)
Parameters
Type | Name | Description |
---|---|---|
String | key | Key to the item. |
Object | cacheValue | Value of the item |
Double | timeout | Timeout for the value, in seconds. '0' means that the value is cahced throughout the session. |
SetPrincipalCarrier(SoPrincipalCarrier)
Private SuperOffice function - do not use! Set the SoPrincipalCarrier for the SoPrincipal.
Declaration
public void SetPrincipalCarrier(SoPrincipalCarrier principalCarrier)
Parameters
Type | Name | Description |
---|---|---|
SoPrincipalCarrier | principalCarrier | The SoPrincipalCarrier to assign to the SoPrincipal. |
Remarks
This method is protected with code access security. It is only to be used by SuperOffice!
ToString()
Summary description for SoPrincipal.
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
String |
TryGetCachedItem(String, out Object)
Summary description for SoPrincipal.
Declaration
public virtual bool TryGetCachedItem(string key, out object item)
Parameters
Type | Name | Description |
---|---|---|
String | key | |
Object | item |
Returns
Type | Description |
---|---|
Boolean |