Subversion Repositories SmartDukaan

Rev

Rev 1121 | Rev 7286 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1050 rajveer 1
package in.shop2020.content.security;
2
 
3
import java.util.ArrayList;
4
import java.util.HashMap;
5
import java.util.List;
6
import java.util.Map;
7
 
1153 rajveer 8
/**
9
 * Singleton class which stores permissions for a particular role. Utility functions for managing roles can be found here.
10
 * 
11
 * @author rajveer
12
 *
13
 */
1050 rajveer 14
public class RoleManager {
15
 
16
	private static RoleManager roleManager;
17
	private Map<Role, List<Action>> permissions;
18
 
1153 rajveer 19
 
1050 rajveer 20
	static{
21
		synchronized(RoleManager.class){
22
			roleManager = new RoleManager();
23
		}
24
	}
25
 
26
	private RoleManager(){
27
		//TODO get the object from bdb
28
		permissions = new HashMap<Role, List<Action>>();
29
		List<Action> developerActions = new ArrayList<Action>();
30
		developerActions.add(Action.EDIT);
31
		developerActions.add(Action.VIEW);
32
		developerActions.add(Action.COMPLETE);
33
		permissions.put(Role.DEVELOPER, developerActions);
34
 
35
		List<Action> editorActions = new ArrayList<Action>();
36
		editorActions.add(Action.EDIT);
37
		editorActions.add(Action.VIEW);
38
		editorActions.add(Action.COMPLETE);
39
		editorActions.add(Action.ASSIGN);
40
		editorActions.add(Action.READY);
41
		permissions.put(Role.EDITOR, editorActions);
42
 
1121 rajveer 43
		List<Action> adminActions = new ArrayList<Action>();
44
		adminActions.add(Action.EDIT);
45
		adminActions.add(Action.VIEW);
46
		adminActions.add(Action.CREATE);
47
		adminActions.add(Action.COMPLETE);
48
		adminActions.add(Action.ASSIGN);
49
		adminActions.add(Action.READY);
50
		adminActions.add(Action.DELETE);
51
		permissions.put(Role.ADMIN, adminActions);
1050 rajveer 52
	}
53
 
1153 rajveer 54
	/**
55
	 * Get the singleton instance of role manager
56
	 * @return
57
	 */
1050 rajveer 58
	public static RoleManager getRoleManager(){
59
		return roleManager;
60
	}
61
 
1153 rajveer 62
	/**
63
	 * Create new role. If already exists, does nothing. 
64
	 * @param role
65
	 */
1050 rajveer 66
	public void createRole(Role role){
67
		if(!permissions.containsKey(role)){
68
			permissions.put(role, null);
69
		}
70
	}
71
 
1153 rajveer 72
	/**
73
	 * utility function to remove a role.
74
	 * 
75
	 * @param role
76
	 */
1050 rajveer 77
	public void dropRole(Role role){
78
		if(permissions.containsKey(role)){
79
			permissions.remove(role);
80
		}	
81
	}
82
 
1153 rajveer 83
	/**
84
	 * Method to grant permission for an action to an role
85
	 * 
86
	 * @param type role to which permission to be granted
87
	 * @param action action which to be added for role
88
	 */
1050 rajveer 89
	public void grantPermission(Role type, Action action){
90
		List<Action> actions = permissions.get(type);
91
		if(actions == null){
92
			actions = new ArrayList<Action>();
93
		}
94
		if(!actions.contains(action)){
95
			actions.add(action);
96
		}
97
	}
98
 
1153 rajveer 99
	/**
100
	 * utility function to remove permissions from a role.
101
	 * 
102
	 * @param type
103
	 * @param action
104
	 */
1050 rajveer 105
	public void revokePermission(Role type, Action action){
106
		List<Action> actions = permissions.get(type);
107
		if(actions != null){
108
			actions.remove(action);
109
		}
110
	}
111
 
1153 rajveer 112
 
1050 rajveer 113
	public boolean hasPermission(Role role, Action action){
114
		return permissions.get(role).contains(action);
115
	}
116
}