RunAsPermission Class

The RunAsPermission class controls the execution of code in the security context of another user and is designed to check permissions for the runAs function. For a list of all APIs protected by permissions, see Secured APIs.

class RunAsPermission extends CodeAccessPermission

Run On

Called

Methods

Method

Description

assert

Declares that the calling code can invoke an API that is protected by a permission. (Inherited from CodeAccessPermission.)

cancelTimeOut

Cancels a previous method call to the Object.setTimeOut Method. (Inherited from Object.)

copy

Overridden. Creates and returns a copy of the current permission class object.

demand

Checks the call stack to determine whether the permission required to invoke an API has been granted to the calling code. (Inherited from CodeAccessPermission.)

equal

Determines whether the specified object is equal to the current one. (Inherited from Object.)

getTimeOutTimerHandle

Returns the timer handle for the object. (Inherited from Object.)

handle

Retrieves the handle of the class of the object. (Inherited from Object.)

isSubsetOf

Overridden. Determines whether a current permission is a subset of the specified permission.

new

Overridden. Creates a new instance of the RunAsPermission class.

notify

Releases the hold on an object that has called a wait method on this object. (Inherited from Object.)

notifyAll

Releases a lock on the object that was issued by a wait method on this object. (Inherited from Object.)

objectOnServer

Determines whether the object is on a server. (Inherited from Object.)

owner

Returns the instance that owns the object. (Inherited from Object.)

setTimeOut

Sets up the scheduled execution of a specified method. (Inherited from Object.)

toString

Returns a string that represents the current object. (Inherited from Object.)

usageCount

Returns the current number of references (the value of the reference counter) that the object has. (Inherited from Object.)

wait

Pauses a process. (Inherited from Object.)

xml

Returns an XML string that represents the current object. (Inherited from Object.)

Remarks

You must call the assert method on the same tier, usually the server tier, that the corresponding CodeAccessPermission::demand method is called on before the protected API is executed. Call a method on the server tier from one of the following:

  • A server static method

  • A class instance method that is set to run on the server by using the RunOn class property

Example

The following code example shows a new instance of the RunAsPermission class.

The assert method is called to declare that the code can then call the runAs function to run the EventJobDueDate::runDueDateEventsForUser method in the security context of another user.

server static void main(Args args)
{
    RunAsPermission _perm;
    UserId          _runAsUser;
    SysUserInfo     _userInfo;

    ;

    _userInfo = SysUserInfo::find();
    _runAsUser = _userInfo.Id;
    _perm = new RunAsPermission(_runAsUser);
    _perm.assert();

    // Invoke the protected API.
    RunAs(_runAsUser, classnum(EventJobDueDate), "runDueDateEventsForUser");

    // Optionally, call revertAssert() to limit the scope of assert.
    CodeAccessPermission::revertAssert();
}

See Also

CodeAccessPermission Class