<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="fr">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
<span class="sourceLineNo">009</span> *<a name="line.9"></a>
<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing,<a name="line.12"></a>
<span class="sourceLineNo">013</span> * software distributed under the License is distributed on an<a name="line.13"></a>
<span class="sourceLineNo">014</span> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY<a name="line.14"></a>
<span class="sourceLineNo">015</span> * KIND, either express or implied.  See the License for the<a name="line.15"></a>
<span class="sourceLineNo">016</span> * specific language governing permissions and limitations<a name="line.16"></a>
<span class="sourceLineNo">017</span> * under the License.<a name="line.17"></a>
<span class="sourceLineNo">018</span> */<a name="line.18"></a>
<span class="sourceLineNo">019</span>package org.apache.shiro.authz;<a name="line.19"></a>
<span class="sourceLineNo">020</span><a name="line.20"></a>
<span class="sourceLineNo">021</span>import org.apache.shiro.subject.PrincipalCollection;<a name="line.21"></a>
<span class="sourceLineNo">022</span><a name="line.22"></a>
<span class="sourceLineNo">023</span>import java.util.Collection;<a name="line.23"></a>
<span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a>
<span class="sourceLineNo">025</span><a name="line.25"></a>
<span class="sourceLineNo">026</span>/**<a name="line.26"></a>
<span class="sourceLineNo">027</span> * An &lt;tt&gt;Authorizer&lt;/tt&gt; performs authorization (access control) operations for any given Subject<a name="line.27"></a>
<span class="sourceLineNo">028</span> * (aka 'application user').<a name="line.28"></a>
<span class="sourceLineNo">029</span> *<a name="line.29"></a>
<span class="sourceLineNo">030</span> * &lt;p&gt;Each method requires a subject principal to perform the action for the corresponding Subject/user.<a name="line.30"></a>
<span class="sourceLineNo">031</span> *<a name="line.31"></a>
<span class="sourceLineNo">032</span> * &lt;p&gt;This principal argument is usually an object representing a user database primary key or a String username or<a name="line.32"></a>
<span class="sourceLineNo">033</span> * something similar that uniquely identifies an application user.  The runtime value of the this principal<a name="line.33"></a>
<span class="sourceLineNo">034</span> * is application-specific and provided by the application's configured Realms.<a name="line.34"></a>
<span class="sourceLineNo">035</span> *<a name="line.35"></a>
<span class="sourceLineNo">036</span> * &lt;p&gt;Note that there are many *Permission methods in this interface overloaded to accept String arguments instead of<a name="line.36"></a>
<span class="sourceLineNo">037</span> * {@link Permission Permission} instances. They are a convenience allowing the caller to use a String representation of<a name="line.37"></a>
<span class="sourceLineNo">038</span> * a {@link Permission Permission} if desired.  Most implementations of this interface will simply convert these<a name="line.38"></a>
<span class="sourceLineNo">039</span> * String values to {@link Permission Permission} instances and then just call the corresponding type-safe method.<a name="line.39"></a>
<span class="sourceLineNo">040</span> * (Shiro's default implementations do String-to-Permission conversion for these methods using<a name="line.40"></a>
<span class="sourceLineNo">041</span> * {@link org.apache.shiro.authz.permission.PermissionResolver PermissionResolver}s.)<a name="line.41"></a>
<span class="sourceLineNo">042</span> *<a name="line.42"></a>
<span class="sourceLineNo">043</span> * &lt;p&gt;These overloaded *Permission methods &lt;em&gt;do&lt;/em&gt; forego type-safety for the benefit of convenience and simplicity,<a name="line.43"></a>
<span class="sourceLineNo">044</span> * so you should choose which ones to use based on your preferences and needs.<a name="line.44"></a>
<span class="sourceLineNo">045</span> *<a name="line.45"></a>
<span class="sourceLineNo">046</span> * @since 0.1<a name="line.46"></a>
<span class="sourceLineNo">047</span> */<a name="line.47"></a>
<span class="sourceLineNo">048</span>public interface Authorizer {<a name="line.48"></a>
<span class="sourceLineNo">049</span><a name="line.49"></a>
<span class="sourceLineNo">050</span>    /**<a name="line.50"></a>
<span class="sourceLineNo">051</span>     * Returns &lt;tt&gt;true&lt;/tt&gt; if the corresponding subject/user is permitted to perform an action or access a resource<a name="line.51"></a>
<span class="sourceLineNo">052</span>     * summarized by the specified permission string.<a name="line.52"></a>
<span class="sourceLineNo">053</span>     *<a name="line.53"></a>
<span class="sourceLineNo">054</span>     * &lt;p&gt;This is an overloaded method for the corresponding type-safe {@link Permission Permission} variant.<a name="line.54"></a>
<span class="sourceLineNo">055</span>     * Please see the class-level JavaDoc for more information on these String-based permission methods.<a name="line.55"></a>
<span class="sourceLineNo">056</span>     *<a name="line.56"></a>
<span class="sourceLineNo">057</span>     * @param principals the application-specific subject/user identifier.<a name="line.57"></a>
<span class="sourceLineNo">058</span>     * @param permission the String representation of a Permission that is being checked.<a name="line.58"></a>
<span class="sourceLineNo">059</span>     * @return true if the corresponding Subject/user is permitted, false otherwise.<a name="line.59"></a>
<span class="sourceLineNo">060</span>     * @see #isPermitted(PrincipalCollection principals,Permission permission)<a name="line.60"></a>
<span class="sourceLineNo">061</span>     * @since 0.9<a name="line.61"></a>
<span class="sourceLineNo">062</span>     */<a name="line.62"></a>
<span class="sourceLineNo">063</span>    boolean isPermitted(PrincipalCollection principals, String permission);<a name="line.63"></a>
<span class="sourceLineNo">064</span><a name="line.64"></a>
<span class="sourceLineNo">065</span>    /**<a name="line.65"></a>
<span class="sourceLineNo">066</span>     * Returns &lt;tt&gt;true&lt;/tt&gt; if the corresponding subject/user is permitted to perform an action or access a resource<a name="line.66"></a>
<span class="sourceLineNo">067</span>     * summarized by the specified permission.<a name="line.67"></a>
<span class="sourceLineNo">068</span>     *<a name="line.68"></a>
<span class="sourceLineNo">069</span>     * &lt;p&gt;More specifically, this method determines if any &lt;tt&gt;Permission&lt;/tt&gt;s associated<a name="line.69"></a>
<span class="sourceLineNo">070</span>     * with the subject {@link Permission#implies(Permission) imply} the specified permission.<a name="line.70"></a>
<span class="sourceLineNo">071</span>     *<a name="line.71"></a>
<span class="sourceLineNo">072</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.72"></a>
<span class="sourceLineNo">073</span>     * @param permission       the permission that is being checked.<a name="line.73"></a>
<span class="sourceLineNo">074</span>     * @return true if the corresponding Subject/user is permitted, false otherwise.<a name="line.74"></a>
<span class="sourceLineNo">075</span>     */<a name="line.75"></a>
<span class="sourceLineNo">076</span>    boolean isPermitted(PrincipalCollection subjectPrincipal, Permission permission);<a name="line.76"></a>
<span class="sourceLineNo">077</span><a name="line.77"></a>
<span class="sourceLineNo">078</span>    /**<a name="line.78"></a>
<span class="sourceLineNo">079</span>     * Checks if the corresponding Subject implies the given permission strings and returns a boolean array<a name="line.79"></a>
<span class="sourceLineNo">080</span>     * indicating which permissions are implied.<a name="line.80"></a>
<span class="sourceLineNo">081</span>     *<a name="line.81"></a>
<span class="sourceLineNo">082</span>     * &lt;p&gt;This is an overloaded method for the corresponding type-safe {@link Permission Permission} variant.<a name="line.82"></a>
<span class="sourceLineNo">083</span>     * Please see the class-level JavaDoc for more information on these String-based permission methods.<a name="line.83"></a>
<span class="sourceLineNo">084</span>     *<a name="line.84"></a>
<span class="sourceLineNo">085</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.85"></a>
<span class="sourceLineNo">086</span>     * @param permissions      the String representations of the Permissions that are being checked.<a name="line.86"></a>
<span class="sourceLineNo">087</span>     * @return an array of booleans whose indices correspond to the index of the<a name="line.87"></a>
<span class="sourceLineNo">088</span>     *         permissions in the given list.  A true value at an index indicates the user is permitted for<a name="line.88"></a>
<span class="sourceLineNo">089</span>     *         for the associated &lt;tt&gt;Permission&lt;/tt&gt; string in the list.  A false value at an index<a name="line.89"></a>
<span class="sourceLineNo">090</span>     *         indicates otherwise.<a name="line.90"></a>
<span class="sourceLineNo">091</span>     * @since 0.9<a name="line.91"></a>
<span class="sourceLineNo">092</span>     */<a name="line.92"></a>
<span class="sourceLineNo">093</span>    boolean[] isPermitted(PrincipalCollection subjectPrincipal, String... permissions);<a name="line.93"></a>
<span class="sourceLineNo">094</span><a name="line.94"></a>
<span class="sourceLineNo">095</span>    /**<a name="line.95"></a>
<span class="sourceLineNo">096</span>     * Checks if the corresponding Subject/user implies the given Permissions and returns a boolean array indicating<a name="line.96"></a>
<span class="sourceLineNo">097</span>     * which permissions are implied.<a name="line.97"></a>
<span class="sourceLineNo">098</span>     *<a name="line.98"></a>
<span class="sourceLineNo">099</span>     * &lt;p&gt;More specifically, this method should determine if each &lt;tt&gt;Permission&lt;/tt&gt; in<a name="line.99"></a>
<span class="sourceLineNo">100</span>     * the array is {@link Permission#implies(Permission) implied} by permissions<a name="line.100"></a>
<span class="sourceLineNo">101</span>     * already associated with the subject.<a name="line.101"></a>
<span class="sourceLineNo">102</span>     *<a name="line.102"></a>
<span class="sourceLineNo">103</span>     * &lt;p&gt;This is primarily a performance-enhancing method to help reduce the number of<a name="line.103"></a>
<span class="sourceLineNo">104</span>     * {@link #isPermitted} invocations over the wire in client/server systems.<a name="line.104"></a>
<span class="sourceLineNo">105</span>     *<a name="line.105"></a>
<span class="sourceLineNo">106</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.106"></a>
<span class="sourceLineNo">107</span>     * @param permissions      the permissions that are being checked.<a name="line.107"></a>
<span class="sourceLineNo">108</span>     * @return an array of booleans whose indices correspond to the index of the<a name="line.108"></a>
<span class="sourceLineNo">109</span>     *         permissions in the given list.  A true value at an index indicates the user is permitted for<a name="line.109"></a>
<span class="sourceLineNo">110</span>     *         for the associated &lt;tt&gt;Permission&lt;/tt&gt; object in the list.  A false value at an index<a name="line.110"></a>
<span class="sourceLineNo">111</span>     *         indicates otherwise.<a name="line.111"></a>
<span class="sourceLineNo">112</span>     */<a name="line.112"></a>
<span class="sourceLineNo">113</span>    boolean[] isPermitted(PrincipalCollection subjectPrincipal, List&lt;Permission&gt; permissions);<a name="line.113"></a>
<span class="sourceLineNo">114</span><a name="line.114"></a>
<span class="sourceLineNo">115</span>    /**<a name="line.115"></a>
<span class="sourceLineNo">116</span>     * Returns &lt;tt&gt;true&lt;/tt&gt; if the corresponding Subject/user implies all of the specified permission strings,<a name="line.116"></a>
<span class="sourceLineNo">117</span>     * &lt;tt&gt;false&lt;/tt&gt; otherwise.<a name="line.117"></a>
<span class="sourceLineNo">118</span>     *<a name="line.118"></a>
<span class="sourceLineNo">119</span>     * &lt;p&gt;This is an overloaded method for the corresponding type-safe {@link Permission Permission} variant.<a name="line.119"></a>
<span class="sourceLineNo">120</span>     * Please see the class-level JavaDoc for more information on these String-based permission methods.<a name="line.120"></a>
<span class="sourceLineNo">121</span>     *<a name="line.121"></a>
<span class="sourceLineNo">122</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.122"></a>
<span class="sourceLineNo">123</span>     * @param permissions      the String representations of the Permissions that are being checked.<a name="line.123"></a>
<span class="sourceLineNo">124</span>     * @return true if the user has all of the specified permissions, false otherwise.<a name="line.124"></a>
<span class="sourceLineNo">125</span>     * @see #isPermittedAll(PrincipalCollection,Collection)<a name="line.125"></a>
<span class="sourceLineNo">126</span>     * @since 0.9<a name="line.126"></a>
<span class="sourceLineNo">127</span>     */<a name="line.127"></a>
<span class="sourceLineNo">128</span>    boolean isPermittedAll(PrincipalCollection subjectPrincipal, String... permissions);<a name="line.128"></a>
<span class="sourceLineNo">129</span><a name="line.129"></a>
<span class="sourceLineNo">130</span>    /**<a name="line.130"></a>
<span class="sourceLineNo">131</span>     * Returns &lt;tt&gt;true&lt;/tt&gt; if the corresponding Subject/user implies all of the specified permissions, &lt;tt&gt;false&lt;/tt&gt;<a name="line.131"></a>
<span class="sourceLineNo">132</span>     * otherwise.<a name="line.132"></a>
<span class="sourceLineNo">133</span>     *<a name="line.133"></a>
<span class="sourceLineNo">134</span>     * &lt;p&gt;More specifically, this method determines if all of the given &lt;tt&gt;Permission&lt;/tt&gt;s are<a name="line.134"></a>
<span class="sourceLineNo">135</span>     * {@link Permission#implies(Permission) implied by} permissions already associated with the subject.<a name="line.135"></a>
<span class="sourceLineNo">136</span>     *<a name="line.136"></a>
<span class="sourceLineNo">137</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.137"></a>
<span class="sourceLineNo">138</span>     * @param permissions      the permissions to check.<a name="line.138"></a>
<span class="sourceLineNo">139</span>     * @return true if the user has all of the specified permissions, false otherwise.<a name="line.139"></a>
<span class="sourceLineNo">140</span>     */<a name="line.140"></a>
<span class="sourceLineNo">141</span>    boolean isPermittedAll(PrincipalCollection subjectPrincipal, Collection&lt;Permission&gt; permissions);<a name="line.141"></a>
<span class="sourceLineNo">142</span><a name="line.142"></a>
<span class="sourceLineNo">143</span>    /**<a name="line.143"></a>
<span class="sourceLineNo">144</span>     * Ensures the corresponding Subject/user implies the specified permission String.<a name="line.144"></a>
<span class="sourceLineNo">145</span>     *<a name="line.145"></a>
<span class="sourceLineNo">146</span>     * &lt;p&gt;If the subject's existing associated permissions do not {@link Permission#implies(Permission)} imply}<a name="line.146"></a>
<span class="sourceLineNo">147</span>     * the given permission, an {@link AuthorizationException} will be thrown.<a name="line.147"></a>
<span class="sourceLineNo">148</span>     *<a name="line.148"></a>
<span class="sourceLineNo">149</span>     * &lt;p&gt;This is an overloaded method for the corresponding type-safe {@link Permission Permission} variant.<a name="line.149"></a>
<span class="sourceLineNo">150</span>     * Please see the class-level JavaDoc for more information on these String-based permission methods.<a name="line.150"></a>
<span class="sourceLineNo">151</span>     *<a name="line.151"></a>
<span class="sourceLineNo">152</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.152"></a>
<span class="sourceLineNo">153</span>     * @param permission       the String representation of the Permission to check.<a name="line.153"></a>
<span class="sourceLineNo">154</span>     * @throws AuthorizationException<a name="line.154"></a>
<span class="sourceLineNo">155</span>     *          if the user does not have the permission.<a name="line.155"></a>
<span class="sourceLineNo">156</span>     * @since 0.9<a name="line.156"></a>
<span class="sourceLineNo">157</span>     */<a name="line.157"></a>
<span class="sourceLineNo">158</span>    void checkPermission(PrincipalCollection subjectPrincipal, String permission) throws AuthorizationException;<a name="line.158"></a>
<span class="sourceLineNo">159</span><a name="line.159"></a>
<span class="sourceLineNo">160</span>    /**<a name="line.160"></a>
<span class="sourceLineNo">161</span>     * Ensures a subject/user {@link Permission#implies(Permission)} implies} the specified &lt;tt&gt;Permission&lt;/tt&gt;.<a name="line.161"></a>
<span class="sourceLineNo">162</span>     * If the subject's existing associated permissions do not {@link Permission#implies(Permission)} imply}<a name="line.162"></a>
<span class="sourceLineNo">163</span>     * the given permission, an {@link AuthorizationException} will be thrown.<a name="line.163"></a>
<span class="sourceLineNo">164</span>     *<a name="line.164"></a>
<span class="sourceLineNo">165</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.165"></a>
<span class="sourceLineNo">166</span>     * @param permission       the Permission to check.<a name="line.166"></a>
<span class="sourceLineNo">167</span>     * @throws AuthorizationException<a name="line.167"></a>
<span class="sourceLineNo">168</span>     *          if the user does not have the permission.<a name="line.168"></a>
<span class="sourceLineNo">169</span>     */<a name="line.169"></a>
<span class="sourceLineNo">170</span>    void checkPermission(PrincipalCollection subjectPrincipal, Permission permission) throws AuthorizationException;<a name="line.170"></a>
<span class="sourceLineNo">171</span><a name="line.171"></a>
<span class="sourceLineNo">172</span>    /**<a name="line.172"></a>
<span class="sourceLineNo">173</span>     * Ensures the corresponding Subject/user<a name="line.173"></a>
<span class="sourceLineNo">174</span>     * {@link Permission#implies(Permission) implies} all of the<a name="line.174"></a>
<span class="sourceLineNo">175</span>     * specified permission strings.<a name="line.175"></a>
<span class="sourceLineNo">176</span>     *<a name="line.176"></a>
<span class="sourceLineNo">177</span>     * If the subject's existing associated permissions do not<a name="line.177"></a>
<span class="sourceLineNo">178</span>     * {@link Permission#implies(Permission) imply} all of the given permissions,<a name="line.178"></a>
<span class="sourceLineNo">179</span>     * an {@link AuthorizationException} will be thrown.<a name="line.179"></a>
<span class="sourceLineNo">180</span>     *<a name="line.180"></a>
<span class="sourceLineNo">181</span>     * &lt;p&gt;This is an overloaded method for the corresponding type-safe {@link Permission Permission} variant.<a name="line.181"></a>
<span class="sourceLineNo">182</span>     * Please see the class-level JavaDoc for more information on these String-based permission methods.<a name="line.182"></a>
<span class="sourceLineNo">183</span>     *<a name="line.183"></a>
<span class="sourceLineNo">184</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.184"></a>
<span class="sourceLineNo">185</span>     * @param permissions      the string representations of Permissions to check.<a name="line.185"></a>
<span class="sourceLineNo">186</span>     * @throws AuthorizationException if the user does not have all of the given permissions.<a name="line.186"></a>
<span class="sourceLineNo">187</span>     * @since 0.9<a name="line.187"></a>
<span class="sourceLineNo">188</span>     */<a name="line.188"></a>
<span class="sourceLineNo">189</span>    void checkPermissions(PrincipalCollection subjectPrincipal, String... permissions) throws AuthorizationException;<a name="line.189"></a>
<span class="sourceLineNo">190</span><a name="line.190"></a>
<span class="sourceLineNo">191</span>    /**<a name="line.191"></a>
<span class="sourceLineNo">192</span>     * Ensures the corresponding Subject/user<a name="line.192"></a>
<span class="sourceLineNo">193</span>     * {@link Permission#implies(Permission) implies} all of the<a name="line.193"></a>
<span class="sourceLineNo">194</span>     * specified permission strings.<a name="line.194"></a>
<span class="sourceLineNo">195</span>     *<a name="line.195"></a>
<span class="sourceLineNo">196</span>     * If the subject's existing associated permissions do not<a name="line.196"></a>
<span class="sourceLineNo">197</span>     * {@link Permission#implies(Permission) imply} all of the given permissions,<a name="line.197"></a>
<span class="sourceLineNo">198</span>     * an {@link AuthorizationException} will be thrown.<a name="line.198"></a>
<span class="sourceLineNo">199</span>     *<a name="line.199"></a>
<span class="sourceLineNo">200</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.200"></a>
<span class="sourceLineNo">201</span>     * @param permissions      the Permissions to check.<a name="line.201"></a>
<span class="sourceLineNo">202</span>     * @throws AuthorizationException if the user does not have all of the given permissions.<a name="line.202"></a>
<span class="sourceLineNo">203</span>     */<a name="line.203"></a>
<span class="sourceLineNo">204</span>    void checkPermissions(PrincipalCollection subjectPrincipal, Collection&lt;Permission&gt; permissions) throws AuthorizationException;<a name="line.204"></a>
<span class="sourceLineNo">205</span><a name="line.205"></a>
<span class="sourceLineNo">206</span>    /**<a name="line.206"></a>
<span class="sourceLineNo">207</span>     * Returns &lt;tt&gt;true&lt;/tt&gt; if the corresponding Subject/user has the specified role, &lt;tt&gt;false&lt;/tt&gt; otherwise.<a name="line.207"></a>
<span class="sourceLineNo">208</span>     *<a name="line.208"></a>
<span class="sourceLineNo">209</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.209"></a>
<span class="sourceLineNo">210</span>     * @param roleIdentifier   the application-specific role identifier (usually a role id or role name).<a name="line.210"></a>
<span class="sourceLineNo">211</span>     * @return &lt;tt&gt;true&lt;/tt&gt; if the corresponding subject has the specified role, &lt;tt&gt;false&lt;/tt&gt; otherwise.<a name="line.211"></a>
<span class="sourceLineNo">212</span>     */<a name="line.212"></a>
<span class="sourceLineNo">213</span>    boolean hasRole(PrincipalCollection subjectPrincipal, String roleIdentifier);<a name="line.213"></a>
<span class="sourceLineNo">214</span><a name="line.214"></a>
<span class="sourceLineNo">215</span>    /**<a name="line.215"></a>
<span class="sourceLineNo">216</span>     * Checks if the corresponding Subject/user has the specified roles, returning a boolean array indicating<a name="line.216"></a>
<span class="sourceLineNo">217</span>     * which roles are associated with the given subject.<a name="line.217"></a>
<span class="sourceLineNo">218</span>     *<a name="line.218"></a>
<span class="sourceLineNo">219</span>     * &lt;p&gt;This is primarily a performance-enhancing method to help reduce the number of<a name="line.219"></a>
<span class="sourceLineNo">220</span>     * {@link #hasRole} invocations over the wire in client/server systems.<a name="line.220"></a>
<span class="sourceLineNo">221</span>     *<a name="line.221"></a>
<span class="sourceLineNo">222</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.222"></a>
<span class="sourceLineNo">223</span>     * @param roleIdentifiers  the application-specific role identifiers to check (usually role ids or role names).<a name="line.223"></a>
<span class="sourceLineNo">224</span>     * @return an array of booleans whose indices correspond to the index of the<a name="line.224"></a>
<span class="sourceLineNo">225</span>     *         roles in the given identifiers.  A true value indicates the user has the<a name="line.225"></a>
<span class="sourceLineNo">226</span>     *         role at that index.  False indicates the user does not have the role at that index.<a name="line.226"></a>
<span class="sourceLineNo">227</span>     */<a name="line.227"></a>
<span class="sourceLineNo">228</span>    boolean[] hasRoles(PrincipalCollection subjectPrincipal, List&lt;String&gt; roleIdentifiers);<a name="line.228"></a>
<span class="sourceLineNo">229</span><a name="line.229"></a>
<span class="sourceLineNo">230</span>    /**<a name="line.230"></a>
<span class="sourceLineNo">231</span>     * Returns &lt;tt&gt;true&lt;/tt&gt; if the corresponding Subject/user has all of the specified roles, &lt;tt&gt;false&lt;/tt&gt; otherwise.<a name="line.231"></a>
<span class="sourceLineNo">232</span>     *<a name="line.232"></a>
<span class="sourceLineNo">233</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.233"></a>
<span class="sourceLineNo">234</span>     * @param roleIdentifiers  the application-specific role identifiers to check (usually role ids or role names).<a name="line.234"></a>
<span class="sourceLineNo">235</span>     * @return true if the user has all the roles, false otherwise.<a name="line.235"></a>
<span class="sourceLineNo">236</span>     */<a name="line.236"></a>
<span class="sourceLineNo">237</span>    boolean hasAllRoles(PrincipalCollection subjectPrincipal, Collection&lt;String&gt; roleIdentifiers);<a name="line.237"></a>
<span class="sourceLineNo">238</span><a name="line.238"></a>
<span class="sourceLineNo">239</span>    /**<a name="line.239"></a>
<span class="sourceLineNo">240</span>     * Asserts the corresponding Subject/user has the specified role by returning quietly if they do or throwing an<a name="line.240"></a>
<span class="sourceLineNo">241</span>     * {@link AuthorizationException} if they do not.<a name="line.241"></a>
<span class="sourceLineNo">242</span>     *<a name="line.242"></a>
<span class="sourceLineNo">243</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.243"></a>
<span class="sourceLineNo">244</span>     * @param roleIdentifier   the application-specific role identifier (usually a role id or role name ).<a name="line.244"></a>
<span class="sourceLineNo">245</span>     * @throws AuthorizationException<a name="line.245"></a>
<span class="sourceLineNo">246</span>     *          if the user does not have the role.<a name="line.246"></a>
<span class="sourceLineNo">247</span>     */<a name="line.247"></a>
<span class="sourceLineNo">248</span>    void checkRole(PrincipalCollection subjectPrincipal, String roleIdentifier) throws AuthorizationException;<a name="line.248"></a>
<span class="sourceLineNo">249</span><a name="line.249"></a>
<span class="sourceLineNo">250</span>    /**<a name="line.250"></a>
<span class="sourceLineNo">251</span>     * Asserts the corresponding Subject/user has all of the specified roles by returning quietly if they do or<a name="line.251"></a>
<span class="sourceLineNo">252</span>     * throwing an {@link AuthorizationException} if they do not.<a name="line.252"></a>
<span class="sourceLineNo">253</span>     *<a name="line.253"></a>
<span class="sourceLineNo">254</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.254"></a>
<span class="sourceLineNo">255</span>     * @param roleIdentifiers  the application-specific role identifiers to check (usually role ids or role names).<a name="line.255"></a>
<span class="sourceLineNo">256</span>     * @throws AuthorizationException<a name="line.256"></a>
<span class="sourceLineNo">257</span>     *          if the user does not have all of the specified roles.<a name="line.257"></a>
<span class="sourceLineNo">258</span>     */<a name="line.258"></a>
<span class="sourceLineNo">259</span>    void checkRoles(PrincipalCollection subjectPrincipal, Collection&lt;String&gt; roleIdentifiers) throws AuthorizationException;<a name="line.259"></a>
<span class="sourceLineNo">260</span><a name="line.260"></a>
<span class="sourceLineNo">261</span>    /**<a name="line.261"></a>
<span class="sourceLineNo">262</span>     * Same as {@link #checkRoles(org.apache.shiro.subject.PrincipalCollection, java.util.Collection)<a name="line.262"></a>
<span class="sourceLineNo">263</span>     * checkRoles(PrincipalCollection subjectPrincipal, Collection&amp;lt;String&amp;gt; roleIdentifiers)} but doesn't require a collection<a name="line.263"></a>
<span class="sourceLineNo">264</span>     * as an argument.<a name="line.264"></a>
<span class="sourceLineNo">265</span>     * Asserts the corresponding Subject/user has all of the specified roles by returning quietly if they do or<a name="line.265"></a>
<span class="sourceLineNo">266</span>     * throwing an {@link AuthorizationException} if they do not.<a name="line.266"></a>
<span class="sourceLineNo">267</span>     *<a name="line.267"></a>
<span class="sourceLineNo">268</span>     * @param subjectPrincipal the application-specific subject/user identifier.<a name="line.268"></a>
<span class="sourceLineNo">269</span>     * @param roleIdentifiers  the application-specific role identifiers to check (usually role ids or role names).<a name="line.269"></a>
<span class="sourceLineNo">270</span>     * @throws AuthorizationException<a name="line.270"></a>
<span class="sourceLineNo">271</span>     *          if the user does not have all of the specified roles.<a name="line.271"></a>
<span class="sourceLineNo">272</span>     *          <a name="line.272"></a>
<span class="sourceLineNo">273</span>     *  @since 1.1.0<a name="line.273"></a>
<span class="sourceLineNo">274</span>     */<a name="line.274"></a>
<span class="sourceLineNo">275</span>    void checkRoles(PrincipalCollection subjectPrincipal, String... roleIdentifiers) throws AuthorizationException;<a name="line.275"></a>
<span class="sourceLineNo">276</span>    <a name="line.276"></a>
<span class="sourceLineNo">277</span>}<a name="line.277"></a>
<span class="sourceLineNo">278</span><a name="line.278"></a>




























































</pre>
</div>
</body>
</html>