There are many cases when you need to know who the current user is in bpm’online. Whether this is in client-side code on a form, or in server-side code in a process or a configuration service.
Getting the Current User in Client-Side Code
The current user is stored in Terrasoft.SysValue as CURRENT_USER. This is a global static script which can be obtained at at at point (even just typing it into the console).
var user = Terrasoft.SysValue.CURRENT_USER; // this object has two properties var userId = user.value; // the user's ID var name = user.displayValue; // the user name
Note, this is the user’s ID & username from SysAdminUnit, not the user’s contact ID. If you need the user’s contact, you can get it using the following:
var userContactId = Terrasoft.SysValue.CURRENT_USER_CONTACT.value;
Obviously, the displayName containing the contact’s name value is available there as well.
Getting the Current User in Server-Side C# Code
If you need the current user in C# code, this is available in the UserConnection as CurrentUser. Getting the UserConnection can vary depending on where your C# code is.
In a Script Task of a Process:
var currentUser = UserConnection.CurrentUser; var userId = currentUser.Id; var userName = currentUser.Name; // or current user contact var contactId = currentUser.ContactId;
Or from a configuration service:
var appConnection = HttpContext.Current.Application["AppConnection"] as AppConnection; var currentUser = appConnection.SystemUserConnection.CurrentUser;
Note, that the object you’re returned from UserConnection.CurrentUser is of type SysUserInfo. The SysUserInfo is just a C# object (not an entity that you’ll see in the database or configuration), implemented in Terrasoft.Core.dll. It inherits from SysAdminUnit and adds five additional properties to the SysAdminUnit data, which are: TimeZone, PageRowsCount, Culture, ClientIP, and DateTimeFormatCode. Other than those five properties, you’ll have the properties from SysAdminUnit available in this object.