<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>RoleAnnotationHandler xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/shiro/authz/aop/RoleAnnotationHandler.html">View Javadoc</a></div><pre>
<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> *     <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.shiro.authz.aop;
<a class="jxr_linenumber" name="L20" href="#L20">20</a>  
<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.authz.AuthorizationException;
<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.authz.annotation.Logical;
<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.authz.annotation.RequiresRoles;
<a class="jxr_linenumber" name="L24" href="#L24">24</a>  
<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> java.lang.annotation.Annotation;
<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> * Checks to see if a @{@link org.apache.shiro.authz.annotation.RequiresRoles RequiresRoles} annotation is declared, and if so, performs</em>
<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> * a role check to see if the calling &lt;code&gt;Subject&lt;/code&gt; is allowed to proceed.</em>
<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> * @since 0.9.0</em>
<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="RoleAnnotationHandler" href="../../../../../org/apache/shiro/authz/aop/RoleAnnotationHandler.html#RoleAnnotationHandler">RoleAnnotationHandler</a> <strong class="jxr_keyword">extends</strong> <a name="AuthorizingAnnotationHandler" href="../../../../../org/apache/shiro/authz/aop/AuthorizingAnnotationHandler.html#AuthorizingAnnotationHandler">AuthorizingAnnotationHandler</a> {
<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
<a class="jxr_linenumber" name="L36" href="#L36">36</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment">     * Default no-argument constructor that ensures this handler looks for</em>
<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment">     * {@link org.apache.shiro.authz.annotation.RequiresRoles RequiresRoles} annotations.</em>
<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="L40" href="#L40">40</a>      <strong class="jxr_keyword">public</strong> <a name="RoleAnnotationHandler" href="../../../../../org/apache/shiro/authz/aop/RoleAnnotationHandler.html#RoleAnnotationHandler">RoleAnnotationHandler</a>() {
<a class="jxr_linenumber" name="L41" href="#L41">41</a>          <strong class="jxr_keyword">super</strong>(RequiresRoles.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L42" href="#L42">42</a>      }
<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">     * Ensures that the calling &lt;code&gt;Subject&lt;/code&gt; has the Annotation's specified roles, and if not, throws an</em>
<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">     * &lt;code&gt;AuthorizingException&lt;/code&gt; indicating that access is denied.</em>
<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">     *</em>
<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">     * @param a the RequiresRoles annotation to use to check for one or more roles</em>
<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <em class="jxr_javadoccomment">     * @throws org.apache.shiro.authz.AuthorizationException</em>
<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <em class="jxr_javadoccomment">     *          if the calling &lt;code&gt;Subject&lt;/code&gt; does not have the role(s) necessary to</em>
<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <em class="jxr_javadoccomment">     *          proceed.</em>
<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> assertAuthorized(Annotation a) <strong class="jxr_keyword">throws</strong> <a name="AuthorizationException" href="../../../../../org/apache/shiro/authz/AuthorizationException.html#AuthorizationException">AuthorizationException</a> {
<a class="jxr_linenumber" name="L54" href="#L54">54</a>          <strong class="jxr_keyword">if</strong> (!(a instanceof RequiresRoles)) <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="L55" href="#L55">55</a>  
<a class="jxr_linenumber" name="L56" href="#L56">56</a>          RequiresRoles rrAnnotation = (RequiresRoles) a;
<a class="jxr_linenumber" name="L57" href="#L57">57</a>          String[] roles = rrAnnotation.value();
<a class="jxr_linenumber" name="L58" href="#L58">58</a>  
<a class="jxr_linenumber" name="L59" href="#L59">59</a>          <strong class="jxr_keyword">if</strong> (roles.length == 1) {
<a class="jxr_linenumber" name="L60" href="#L60">60</a>              getSubject().checkRole(roles[0]);
<a class="jxr_linenumber" name="L61" href="#L61">61</a>              <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="L62" href="#L62">62</a>          }
<a class="jxr_linenumber" name="L63" href="#L63">63</a>          <strong class="jxr_keyword">if</strong> (Logical.AND.equals(rrAnnotation.logical())) {
<a class="jxr_linenumber" name="L64" href="#L64">64</a>              getSubject().checkRoles(Arrays.asList(roles));
<a class="jxr_linenumber" name="L65" href="#L65">65</a>              <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="L66" href="#L66">66</a>          }
<a class="jxr_linenumber" name="L67" href="#L67">67</a>          <strong class="jxr_keyword">if</strong> (Logical.OR.equals(rrAnnotation.logical())) {
<a class="jxr_linenumber" name="L68" href="#L68">68</a>              <em class="jxr_comment">// Avoid processing exceptions unnecessarily - "delay" throwing the exception by calling hasRole first</em>
<a class="jxr_linenumber" name="L69" href="#L69">69</a>              <strong class="jxr_keyword">boolean</strong> hasAtLeastOneRole = false;
<a class="jxr_linenumber" name="L70" href="#L70">70</a>              <strong class="jxr_keyword">for</strong> (String role : roles) <strong class="jxr_keyword">if</strong> (getSubject().hasRole(role)) hasAtLeastOneRole = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="L71" href="#L71">71</a>              <em class="jxr_comment">// Cause the exception if none of the role match, note that the exception message will be a bit misleading</em>
<a class="jxr_linenumber" name="L72" href="#L72">72</a>              <strong class="jxr_keyword">if</strong> (!hasAtLeastOneRole) getSubject().checkRole(roles[0]);
<a class="jxr_linenumber" name="L73" href="#L73">73</a>          }
<a class="jxr_linenumber" name="L74" href="#L74">74</a>      }
<a class="jxr_linenumber" name="L75" href="#L75">75</a>  
<a class="jxr_linenumber" name="L76" href="#L76">76</a>  }
</pre>
<hr/>
<div id="footer">Copyright &#169; 2004&#x2013;2023 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</div>
</body>
</html>
