View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
19   *
20   */
21  
22  package org.opencastproject.security.api;
23  
24  /**
25   * An exception that indicates that a subject attempted to take an action for which it was not authorized.
26   */
27  public class UnauthorizedException extends Exception {
28  
29    /** The java.io.serialization uid */
30    private static final long serialVersionUID = 7717178990322180202L;
31  
32    /**
33     * Constructs an UnauthorizedException using the specified message.
34     *
35     * @param message
36     *          the message describing the reason for this exception
37     */
38    public UnauthorizedException(String message) {
39      super(message);
40    }
41  
42    /**
43     * Constructs an UnauthorizedException for the specified user's attempt to take a specified action.
44     *
45     * @param user
46     *          the current user
47     * @param action
48     *          the action attempted
49     */
50    public UnauthorizedException(User user, String action) {
51      super(formatMessage(user, action, null));
52    }
53  
54    /**
55     * Constructs an UnauthorizedException for the specified user's attempt to take a specified action.
56     *
57     * @param user
58     *          the current user
59     * @param action
60     *          the action attempted
61     * @param acl
62     *          the access control list that prevented the action
63     */
64    public UnauthorizedException(User user, String action, AccessControlList acl) {
65      super(formatMessage(user, action, acl));
66    }
67  
68    private static String formatMessage(User user, String action, AccessControlList acl) {
69      StringBuilder sb = new StringBuilder();
70      sb.append(user.toString());
71      sb.append(" can not take action ");
72      sb.append("'");
73      sb.append(action);
74      sb.append("'");
75      if (acl != null) {
76        sb.append(" according to ");
77        sb.append(acl);
78      }
79      return sb.toString();
80    }
81  }