<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_191) on Fri Dec 21 13:21:35 PST 2018 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>UserContext (guacamole-ext 1.0.0 API)</title>
<meta name="date" content="2018-12-21">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="UserContext (guacamole-ext 1.0.0 API)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/UserContext.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/guacamole/net/auth/User.Attribute.html" title="class in org.apache.guacamole.net.auth"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/guacamole/net/auth/UserGroup.html" title="interface in org.apache.guacamole.net.auth"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/guacamole/net/auth/UserContext.html" target="_top">Frames</a></li>
<li><a href="UserContext.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.guacamole.net.auth</div>
<h2 title="Interface UserContext" class="title">Interface UserContext</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../org/apache/guacamole/net/auth/AbstractUserContext.html" title="class in org.apache.guacamole.net.auth">AbstractUserContext</a>, <a href="../../../../../org/apache/guacamole/net/auth/DelegatingUserContext.html" title="class in org.apache.guacamole.net.auth">DelegatingUserContext</a>, <a href="../../../../../org/apache/guacamole/net/auth/simple/SimpleUserContext.html" title="class in org.apache.guacamole.net.auth.simple">SimpleUserContext</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">UserContext</span></pre>
<div class="block">The context of an active user. The functions of this class enforce all
 permissions and act only within the rights of the associated user.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/ActiveConnection.html" title="interface in org.apache.guacamole.net.auth">ActiveConnection</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getActiveConnectionDirectory--">getActiveConnectionDirectory</a></span>()</code>
<div class="block">Retrieves a Directory which can be used to view and manipulate
 active connections, but only as allowed by the permissions given to the
 user.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/AuthenticationProvider.html" title="interface in org.apache.guacamole.net.auth">AuthenticationProvider</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getAuthenticationProvider--">getAuthenticationProvider</a></span>()</code>
<div class="block">Returns the AuthenticationProvider which created this UserContext, which
 may not be the same AuthenticationProvider that authenticated the user
 associated with this UserContext.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/guacamole/form/Form.html" title="class in org.apache.guacamole.form">Form</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getConnectionAttributes--">getConnectionAttributes</a></span>()</code>
<div class="block">Retrieves a collection of all attributes applicable to connections.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/Connection.html" title="interface in org.apache.guacamole.net.auth">Connection</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getConnectionDirectory--">getConnectionDirectory</a></span>()</code>
<div class="block">Retrieves a Directory which can be used to view and manipulate
 connections and their configurations, but only as allowed by the
 permissions given to the user.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/guacamole/form/Form.html" title="class in org.apache.guacamole.form">Form</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getConnectionGroupAttributes--">getConnectionGroupAttributes</a></span>()</code>
<div class="block">Retrieves a collection of all attributes applicable to connection
 groups.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/ConnectionGroup.html" title="interface in org.apache.guacamole.net.auth">ConnectionGroup</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getConnectionGroupDirectory--">getConnectionGroupDirectory</a></span>()</code>
<div class="block">Retrieves a Directory which can be used to view and manipulate
 connection groups and their members, but only as allowed by the
 permissions given to the user.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/ActivityRecordSet.html" title="interface in org.apache.guacamole.net.auth">ActivityRecordSet</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/ConnectionRecord.html" title="interface in org.apache.guacamole.net.auth">ConnectionRecord</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getConnectionHistory--">getConnectionHistory</a></span>()</code>
<div class="block">Retrieves all connection records visible to current user.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getResource--">getResource</a></span>()</code>
<div class="block">Returns an arbitrary REST resource representing this UserContext.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/ConnectionGroup.html" title="interface in org.apache.guacamole.net.auth">ConnectionGroup</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getRootConnectionGroup--">getRootConnectionGroup</a></span>()</code>
<div class="block">Retrieves a connection group which can be used to view and manipulate
 connections, but only as allowed by the permissions given to the user of 
 this UserContext.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/guacamole/form/Form.html" title="class in org.apache.guacamole.form">Form</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getSharingProfileAttributes--">getSharingProfileAttributes</a></span>()</code>
<div class="block">Retrieves a collection of all attributes applicable to sharing profiles.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/SharingProfile.html" title="interface in org.apache.guacamole.net.auth">SharingProfile</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getSharingProfileDirectory--">getSharingProfileDirectory</a></span>()</code>
<div class="block">Retrieves a Directory which can be used to view and manipulate
 sharing profiles and their configurations, but only as allowed by the
 permissions given to the user.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/guacamole/form/Form.html" title="class in org.apache.guacamole.form">Form</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getUserAttributes--">getUserAttributes</a></span>()</code>
<div class="block">Retrieves a collection of all attributes applicable to users.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/User.html" title="interface in org.apache.guacamole.net.auth">User</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getUserDirectory--">getUserDirectory</a></span>()</code>
<div class="block">Retrieves a Directory which can be used to view and manipulate other
 users, but only as allowed by the permissions given to the user of this
 UserContext.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/guacamole/form/Form.html" title="class in org.apache.guacamole.form">Form</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getUserGroupAttributes--">getUserGroupAttributes</a></span>()</code>
<div class="block">Retrieves a collection of all attributes applicable to user groups.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/UserGroup.html" title="interface in org.apache.guacamole.net.auth">UserGroup</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getUserGroupDirectory--">getUserGroupDirectory</a></span>()</code>
<div class="block">Retrieves a Directory which can be used to view and manipulate user
 groups, but only as allowed by the permissions given to the user of this
 UserContext.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/ActivityRecordSet.html" title="interface in org.apache.guacamole.net.auth">ActivityRecordSet</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/ActivityRecord.html" title="interface in org.apache.guacamole.net.auth">ActivityRecord</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#getUserHistory--">getUserHistory</a></span>()</code>
<div class="block">Retrieves all user history records visible to current user.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#invalidate--">invalidate</a></span>()</code>
<div class="block">Invalidates this user context, releasing all associated resources.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/guacamole/net/auth/User.html" title="interface in org.apache.guacamole.net.auth">User</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/guacamole/net/auth/UserContext.html#self--">self</a></span>()</code>
<div class="block">Returns the User whose access rights control the operations of this
 UserContext.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="self--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>self</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/User.html" title="interface in org.apache.guacamole.net.auth">User</a>&nbsp;self()</pre>
<div class="block">Returns the User whose access rights control the operations of this
 UserContext.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The User whose access rights control the operations of this
         UserContext.</dd>
</dl>
</li>
</ul>
<a name="getResource--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getResource</h4>
<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;getResource()
            throws org.apache.guacamole.GuacamoleException</pre>
<div class="block">Returns an arbitrary REST resource representing this UserContext. The
 REST resource returned must be properly annotated with JSR-311
 annotations, and may serve as the root resource for any number of
 subresources. The returned resource is ultimately exposed at
 ".../api/session/ext/IDENTIFIER/", where IDENTIFIER is the identifier of
 the AuthenticationProvider associated with this UserContext.

 REST resources returned by this function will only be reachable by
 authenticated users with valid authentication tokens. REST resources
 which should be accessible by all users regardless of whether they have
 authenticated should instead be returned from
 AuthenticationProvider.getResource().</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>An arbitrary REST resource, annotated with JSR-311 annotations, or
     null if no such resource is defined.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.guacamole.GuacamoleException</code> - If the REST resource cannot be returned due to an error.</dd>
</dl>
</li>
</ul>
<a name="getAuthenticationProvider--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAuthenticationProvider</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/AuthenticationProvider.html" title="interface in org.apache.guacamole.net.auth">AuthenticationProvider</a>&nbsp;getAuthenticationProvider()</pre>
<div class="block">Returns the AuthenticationProvider which created this UserContext, which
 may not be the same AuthenticationProvider that authenticated the user
 associated with this UserContext.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The AuthenticationProvider that created this UserContext.</dd>
</dl>
</li>
</ul>
<a name="getUserDirectory--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUserDirectory</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/User.html" title="interface in org.apache.guacamole.net.auth">User</a>&gt;&nbsp;getUserDirectory()
                          throws org.apache.guacamole.GuacamoleException</pre>
<div class="block">Retrieves a Directory which can be used to view and manipulate other
 users, but only as allowed by the permissions given to the user of this
 UserContext.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A Directory whose operations are bound by the restrictions
         of this UserContext.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.guacamole.GuacamoleException</code> - If an error occurs while creating the
                            Directory.</dd>
</dl>
</li>
</ul>
<a name="getUserGroupDirectory--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUserGroupDirectory</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/UserGroup.html" title="interface in org.apache.guacamole.net.auth">UserGroup</a>&gt;&nbsp;getUserGroupDirectory()
                                    throws org.apache.guacamole.GuacamoleException</pre>
<div class="block">Retrieves a Directory which can be used to view and manipulate user
 groups, but only as allowed by the permissions given to the user of this
 UserContext.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A Directory whose operations are bound by the restrictions
     of this UserContext.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.guacamole.GuacamoleException</code> - If an error occurs while creating the Directory.</dd>
</dl>
</li>
</ul>
<a name="getConnectionDirectory--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConnectionDirectory</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/Connection.html" title="interface in org.apache.guacamole.net.auth">Connection</a>&gt;&nbsp;getConnectionDirectory()
                                      throws org.apache.guacamole.GuacamoleException</pre>
<div class="block">Retrieves a Directory which can be used to view and manipulate
 connections and their configurations, but only as allowed by the
 permissions given to the user.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A Directory whose operations are bound by the permissions of 
         the user.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.guacamole.GuacamoleException</code> - If an error occurs while creating the
                            Directory.</dd>
</dl>
</li>
</ul>
<a name="getConnectionGroupDirectory--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConnectionGroupDirectory</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/ConnectionGroup.html" title="interface in org.apache.guacamole.net.auth">ConnectionGroup</a>&gt;&nbsp;getConnectionGroupDirectory()
                                                throws org.apache.guacamole.GuacamoleException</pre>
<div class="block">Retrieves a Directory which can be used to view and manipulate
 connection groups and their members, but only as allowed by the
 permissions given to the user.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A Directory whose operations are bound by the permissions of
         the user.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.guacamole.GuacamoleException</code> - If an error occurs while creating the
                            Directory.</dd>
</dl>
</li>
</ul>
<a name="getActiveConnectionDirectory--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getActiveConnectionDirectory</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/ActiveConnection.html" title="interface in org.apache.guacamole.net.auth">ActiveConnection</a>&gt;&nbsp;getActiveConnectionDirectory()
                                                  throws org.apache.guacamole.GuacamoleException</pre>
<div class="block">Retrieves a Directory which can be used to view and manipulate
 active connections, but only as allowed by the permissions given to the
 user.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A Directory whose operations are bound by the permissions of the
     user.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.guacamole.GuacamoleException</code> - If an error occurs while creating the Directory.</dd>
</dl>
</li>
</ul>
<a name="getSharingProfileDirectory--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSharingProfileDirectory</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/Directory.html" title="interface in org.apache.guacamole.net.auth">Directory</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/SharingProfile.html" title="interface in org.apache.guacamole.net.auth">SharingProfile</a>&gt;&nbsp;getSharingProfileDirectory()
                                              throws org.apache.guacamole.GuacamoleException</pre>
<div class="block">Retrieves a Directory which can be used to view and manipulate
 sharing profiles and their configurations, but only as allowed by the
 permissions given to the user.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A Directory whose operations are bound by the permissions of the
     user.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.guacamole.GuacamoleException</code> - If an error occurs while creating the Directory.</dd>
</dl>
</li>
</ul>
<a name="getConnectionHistory--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConnectionHistory</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/ActivityRecordSet.html" title="interface in org.apache.guacamole.net.auth">ActivityRecordSet</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/ConnectionRecord.html" title="interface in org.apache.guacamole.net.auth">ConnectionRecord</a>&gt;&nbsp;getConnectionHistory()
                                                  throws org.apache.guacamole.GuacamoleException</pre>
<div class="block">Retrieves all connection records visible to current user. Connection
 history records describe the start and end times of connections, and
 correspond to the times that users connect or disconnect to individual
 remote desktops. The resulting set of connection records can be further
 filtered and ordered using the methods defined on ActivityRecordSet.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A set of all connection records visible to the current user.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.guacamole.GuacamoleException</code> - If an error occurs while retrieving the connection records.</dd>
</dl>
</li>
</ul>
<a name="getUserHistory--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUserHistory</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/ActivityRecordSet.html" title="interface in org.apache.guacamole.net.auth">ActivityRecordSet</a>&lt;<a href="../../../../../org/apache/guacamole/net/auth/ActivityRecord.html" title="interface in org.apache.guacamole.net.auth">ActivityRecord</a>&gt;&nbsp;getUserHistory()
                                          throws org.apache.guacamole.GuacamoleException</pre>
<div class="block">Retrieves all user history records visible to current user. User history
 records describe the start and end times of user sessions, and correspond
 to the times that users logged in or out. The resulting set of user
 records can be further filtered and ordered using the methods defined on
 ActivityRecordSet.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A set of all user records visible to the current user.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.guacamole.GuacamoleException</code> - If an error occurs while retrieving the user records.</dd>
</dl>
</li>
</ul>
<a name="getRootConnectionGroup--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRootConnectionGroup</h4>
<pre><a href="../../../../../org/apache/guacamole/net/auth/ConnectionGroup.html" title="interface in org.apache.guacamole.net.auth">ConnectionGroup</a>&nbsp;getRootConnectionGroup()
                                throws org.apache.guacamole.GuacamoleException</pre>
<div class="block">Retrieves a connection group which can be used to view and manipulate
 connections, but only as allowed by the permissions given to the user of 
 this UserContext.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A connection group whose operations are bound by the restrictions
         of this UserContext.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.guacamole.GuacamoleException</code> - If an error occurs while creating the
                            Directory.</dd>
</dl>
</li>
</ul>
<a name="getUserAttributes--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUserAttributes</h4>
<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/guacamole/form/Form.html" title="class in org.apache.guacamole.form">Form</a>&gt;&nbsp;getUserAttributes()</pre>
<div class="block">Retrieves a collection of all attributes applicable to users. This
 collection will contain only those attributes which the current user has
 general permission to view or modify. If there are no such attributes,
 this collection will be empty.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A collection of all attributes applicable to users.</dd>
</dl>
</li>
</ul>
<a name="getUserGroupAttributes--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUserGroupAttributes</h4>
<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/guacamole/form/Form.html" title="class in org.apache.guacamole.form">Form</a>&gt;&nbsp;getUserGroupAttributes()</pre>
<div class="block">Retrieves a collection of all attributes applicable to user groups. This
 collection will contain only those attributes which the current user has
 general permission to view or modify. If there are no such attributes,
 this collection will be empty.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A collection of all attributes applicable to user groups.</dd>
</dl>
</li>
</ul>
<a name="getConnectionAttributes--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConnectionAttributes</h4>
<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/guacamole/form/Form.html" title="class in org.apache.guacamole.form">Form</a>&gt;&nbsp;getConnectionAttributes()</pre>
<div class="block">Retrieves a collection of all attributes applicable to connections. This
 collection will contain only those attributes which the current user has
 general permission to view or modify. If there are no such attributes,
 this collection will be empty.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A collection of all attributes applicable to connections.</dd>
</dl>
</li>
</ul>
<a name="getConnectionGroupAttributes--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConnectionGroupAttributes</h4>
<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/guacamole/form/Form.html" title="class in org.apache.guacamole.form">Form</a>&gt;&nbsp;getConnectionGroupAttributes()</pre>
<div class="block">Retrieves a collection of all attributes applicable to connection
 groups. This collection will contain only those attributes which the
 current user has general permission to view or modify. If there are no
 such attributes, this collection will be empty.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A collection of all attributes applicable to connection groups.</dd>
</dl>
</li>
</ul>
<a name="getSharingProfileAttributes--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSharingProfileAttributes</h4>
<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/guacamole/form/Form.html" title="class in org.apache.guacamole.form">Form</a>&gt;&nbsp;getSharingProfileAttributes()</pre>
<div class="block">Retrieves a collection of all attributes applicable to sharing profiles.
 This collection will contain only those attributes which the current user
 has general permission to view or modify. If there are no such
 attributes, this collection will be empty.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A collection of all attributes applicable to sharing profile.</dd>
</dl>
</li>
</ul>
<a name="invalidate--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>invalidate</h4>
<pre>void&nbsp;invalidate()</pre>
<div class="block">Invalidates this user context, releasing all associated resources. This
 function will be invoked when the user logs out, or when their session
 is automatically invalidated.</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/UserContext.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/guacamole/net/auth/User.Attribute.html" title="class in org.apache.guacamole.net.auth"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/guacamole/net/auth/UserGroup.html" title="interface in org.apache.guacamole.net.auth"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/guacamole/net/auth/UserContext.html" target="_top">Frames</a></li>
<li><a href="UserContext.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2018. All rights reserved.</small></p>
        <!-- Google Analytics -->
        <script type="text/javascript">
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          ga('create', 'UA-75289145-1', 'auto');
          ga('send', 'pageview');
        </script>
</body>
</html>
