Entitlement
//elementary!
/*
* Public Domain Sample Code
*/
package de.jugs.cookbook;
import de.must.markup.*;
/**
* Entitlement manager.
*
To guarantee each user may only do the things he is allowed to,
* Cameleon OSP provides a 3 step entitlement regulation:
*
1. Each functionallity of your application may be assigned to subject
* area. Done via implementing public static final int subjectArea.
* This variable is determined by using reflection.
*
2. One the other side, each user may be assigned to a user group.
* This is done by editing the table user.
*
3. In this class, the Framework is going to ask you, whether the
* logged in user is allowed to do something. Instead of answering
* yes or no, we answer the level to be done. Sample. Subject area XY
* may be viewed by the current user, but not edited.
* @author Christoph Mueller
*/
public final class Entitlement extends EntitlementStd {
private static final boolean verbose = false;
public static final int AREA_COOKBOOK_GENERAL = 10;
public static final int AREA_COOKBOOK_ORGANIZATION = 15;
// public static final int AREA_SECTION2_GENERAL = 20;
// public static final int AREA_SECTION2_ORGANIZATION = 25;
// public static final int AREA_SECTION3_GENERAL = 30;
// public static final int AREA_SECTION3_ORGANIZATION = 35;
public static final int AREA_GLOBAL_ADMINISTRATION = 99;
public Entitlement(SessionData sessionData) {
super(sessionData);
}
/**
* Returns what the logged in user may do in this context. This is
* represented by the returned level.
* Prefered way to regulate entitlement. This is a sample of the paradigm as
* mentioned in class Main: The framework tells you, it's going to offer
* functionallity to the user, which is part of a certain subject area. It
* wants to know from you, whether you want to allow this user to access it.
* And if so, whether he may view or modify it.
* The way you implement this check is totally liberal. E.g. you may call LDAP
* from here, if you like.
* @param subjectArea the subject area of the context
* @return the level - e.g. may be viewed only
*/
public int getLevel(int subjectArea) {
if (subjectArea >= 90) {
if (sessionData.loggedInUser == null) return LEVEL_NOTHING;
if (sessionData.loggedInUser.getUserGroup() == null) return LEVEL_NOTHING;
if (!sessionData.loggedInUser.getUserGroup().equals("9")) return LEVEL_NOTHING;
}
String userGroup;
if (sessionData.loggedInUser == null || (userGroup = sessionData.loggedInUser.getUserGroup()) == null) userGroup = "0";
if (subjectArea == Entitlement.AREA_COOKBOOK_ORGANIZATION) {
if (userGroup.equals("9")) return LEVEL_ALL;
if (userGroup.equals("5")) return LEVEL_DELETE;
if (userGroup.equals("2")) return LEVEL_VIEW;
if (userGroup.equals("1")) return LEVEL_VIEW;
return LEVEL_NOTHING;
}
if (userGroup.equals("9")) return LEVEL_ALL;
if (userGroup.equals("5")) return LEVEL_DELETE;
if (userGroup.equals("2")) return LEVEL_ADD;
if (userGroup.equals("1")) return LEVEL_VIEW;
return LEVEL_VIEW;
}
}
Source is part of the Open Source Project Cameleon OSP