001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.wicket.examples.authorization.pages;
018:
019: import java.util.Arrays;
020: import java.util.List;
021:
022: import org.apache.wicket.ajax.AjaxRequestTarget;
023: import org.apache.wicket.ajax.markup.html.AjaxLink;
024: import org.apache.wicket.authorization.Action;
025: import org.apache.wicket.authorization.strategies.role.Roles;
026: import org.apache.wicket.authorization.strategies.role.annotations.AuthorizeAction;
027: import org.apache.wicket.examples.authorization.BasePage;
028: import org.apache.wicket.markup.html.WebMarkupContainer;
029: import org.apache.wicket.markup.html.basic.Label;
030: import org.apache.wicket.markup.html.list.ListItem;
031: import org.apache.wicket.markup.html.list.ListView;
032: import org.apache.wicket.markup.html.panel.Panel;
033:
034: /**
035: * Bookmarkable page that may only be accessed by users that have role ADMIN.
036: *
037: * @author Eelco Hillenius
038: */
039: public class AnnotationsPanelsPage extends BasePage {
040: @AuthorizeAction(action=Action.RENDER,roles=Roles.ADMIN)
041: private static class AdminLabel extends Label {
042: /**
043: * @param id
044: * @param nbr
045: */
046: public AdminLabel(String id, String nbr) {
047: super (id, "label for admins " + nbr);
048: }
049: }
050:
051: /**
052: * A panel that is only visible for users with role ADMIN.
053: */
054: @AuthorizeAction(action=Action.RENDER,roles=Roles.ADMIN)
055: private static final class ForAdmins extends Panel {
056: /**
057: * Construct.
058: *
059: * @param id
060: */
061: public ForAdmins(String id) {
062: super (id);
063: }
064: }
065:
066: /**
067: * A panel that is only visible for users with role ADMIN or USER.
068: */
069: @AuthorizeAction(action=Action.RENDER,roles={Roles.ADMIN,Roles.USER})
070: private static final class ForAdminsAndUsers extends Panel {
071: /**
072: * Construct.
073: *
074: * @param id
075: */
076: public ForAdminsAndUsers(String id) {
077: super (id);
078: }
079: }
080:
081: /**
082: * A panel that is visible for all users.
083: */
084: private static final class ForAllUsers extends Panel {
085: /**
086: * Construct.
087: *
088: * @param id
089: */
090: public ForAllUsers(String id) {
091: super (id);
092: }
093: }
094:
095: /**
096: * A panel that is only visible for users with role ADMIN or USER.
097: */
098: @AuthorizeAction(action=Action.RENDER,roles={Roles.ADMIN,Roles.USER})
099: private static final class Test extends Panel {
100: /**
101: * Construct.
102: *
103: * @param id
104: */
105: public Test(String id) {
106: super (id);
107: List l = Arrays.asList("1", "2", "3", "4", "5");
108: ListView listView = new ListView("list", l) {
109: @Override
110: protected void populateItem(ListItem item) {
111: String i = item.getModelObjectAsString();
112: item.add(new UserLabel("userLabel", i));
113: item.add(new AdminLabel("adminLabel", i));
114: }
115: };
116: add(listView);
117: listView.setReuseItems(true);
118: }
119: }
120:
121: @AuthorizeAction(action=Action.RENDER,roles=Roles.USER)
122: private static class UserLabel extends Label {
123: /**
124: * @param id
125: * @param nbr
126: */
127: public UserLabel(String id, String nbr) {
128: super (id, "label for users " + nbr);
129: }
130: }
131:
132: private WebMarkupContainer outer;
133:
134: private boolean showDummy = true;
135:
136: /**
137: * Construct.
138: */
139: public AnnotationsPanelsPage() {
140: add(new ForAllUsers("forAllUsersPanel"));
141: add(new ForAdminsAndUsers("forAdminsAndUsersPanel"));
142: add(new ForAdmins("forAdminsPanel"));
143: add(outer = new WebMarkupContainer("outer"));
144: outer.setOutputMarkupId(true);
145:
146: outer.add(new WebMarkupContainer("test")
147: .setOutputMarkupId(true));
148: add(new AjaxLink("link") {
149: @Override
150: public void onClick(AjaxRequestTarget target) {
151: showDummy = !showDummy;
152: if (showDummy) {
153: outer.replace(new WebMarkupContainer("test"));
154: } else {
155: outer.replace(new Test("test"));
156: }
157: target.addComponent(outer);
158: }
159: });
160: }
161:
162: }
|