Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1050 rajveer 1
package in.shop2020.content.security;
2
 
3
import in.shop2020.metamodel.core.EntityState;
4
import in.shop2020.metamodel.core.EntityStatus;
5
import in.shop2020.storage.bdb.StorageManager;
6
import in.shop2020.util.Utils;
7
 
8
import java.io.File;
9
import java.io.IOException;
10
import java.io.InputStreamReader;
11
import java.util.ArrayList;
12
import java.util.Collection;
13
import java.util.HashMap;
14
import java.util.List;
15
import java.util.Map;
16
import java.util.Set;
17
 
18
import javax.xml.parsers.DocumentBuilder;
19
import javax.xml.parsers.DocumentBuilderFactory;
20
import javax.xml.parsers.ParserConfigurationException;
21
import javax.xml.xpath.XPath;
22
import javax.xml.xpath.XPathConstants;
23
import javax.xml.xpath.XPathExpressionException;
24
import javax.xml.xpath.XPathFactory;
25
 
26
import org.w3c.dom.Document;
27
import org.w3c.dom.Element;
28
import org.w3c.dom.NodeList;
29
import org.xml.sax.InputSource;
30
import org.xml.sax.SAXException;
31
 
32
public class UserManager {
33
 
34
	private static UserManager userManager;
35
	private Map<String, User> users;
36
	private String admin = "admin";
37
	static{
38
		synchronized(UserManager.class){
39
			userManager = new UserManager();
40
		}
41
	}
42
 
43
	private UserManager(){
44
		//TODO Load initial list of users
45
		users = new HashMap<String, User>();
46
		this.loadUsers();
47
//		System.out.println(users);
48
//		users.put("vrinda", new User("vrinda", "vrinda", Role.EDITOR));
49
//		users.put("smriti", new User("smriti", "smriti", Role.DEVELOPER));
50
//		users.put("priyanka", new User("priyanka", "priyanka", Role.DEVELOPER));
51
//		users.put("rajveer", new User("rajveer", "rajveer", Role.ADMIN));
52
 
53
	}
54
 
55
	public static void main(String[] args){
56
		System.out.println(UserManager.getUserManager().getAllUsers());
57
	}
58
 
59
	private void loadUsers() {
60
	       String xmlFile = Utils.CONTENT_DB_PATH + "definitions" + File.separator + "users.xml";
61
	       File file = new File(xmlFile);
62
	       if(file.exists()){
63
	    	   try{
64
				 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
65
			     DocumentBuilder builder = factory.newDocumentBuilder();
66
			     Document doc = builder.parse(xmlFile);
67
			     NodeList list = doc.getElementsByTagName("User");
68
			     for(int i=0; i<list.getLength(); i++) {
69
			       Element element = (Element)list.item(i);
70
			       String name = element.getElementsByTagName("Username").item(0).getTextContent();
71
			       String password = element.getElementsByTagName("Password").item(0).getTextContent();
72
					int roleId = Integer.parseInt(element.getElementsByTagName("Role").item(0).getTextContent());
73
 
74
					Role role = Role.DEVELOPER;
75
					switch (roleId) {
76
					case 0:
77
						role = Role.DEVELOPER;
78
						break;
79
 
80
					case 1:
81
						role = Role.EDITOR;
82
						break;
83
 
84
					case 2:
85
						role = Role.ADMIN;
86
						admin = name;
87
						break;
88
 
89
					default:
90
						break;
91
					}
92
					User user = new User(name, password, role);
93
					users.put(name, user);
94
					System.out.println(name +password + role);
95
 
96
			     }
97
	    	   }catch(Exception ex){
98
 
99
	    	   }
100
	       }
101
	}
102
	private void loadUsers1(){
103
		InputSource inputSource = new InputSource(Utils.CONTENT_DB_PATH + "definitions" + File.separator + "users.xml");
104
		XPath xpath = XPathFactory.newInstance().newXPath();
105
 
106
		String expression = "/Definition";
107
		NodeList nodes = null;
108
		try {
109
			nodes = (NodeList) xpath.evaluate(expression, inputSource,	XPathConstants.NODESET);
110
		} catch(XPathExpressionException xpee) {
111
 
112
		}
113
 
114
		System.out.println(nodes);
115
 
116
		for(int i=nodes.getLength()-1; i>=0; i--) {
117
			System.out.println(nodes.item(i));
118
 
119
			System.out.println(nodes.getLength());
120
 
121
			Element userInfo = (Element) nodes.item(i);
122
 
123
			String name = userInfo.getElementsByTagName("Username").item(0).getTextContent();
124
			String password = userInfo.getElementsByTagName("Password").item(0).getTextContent();
125
			int roleId = Integer.parseInt(userInfo.getElementsByTagName("role").item(0).getTextContent());
126
			Role role = Role.DEVELOPER;
127
 
128
			switch (roleId) {
129
			case 0:
130
				role = Role.DEVELOPER;
131
				break;
132
 
133
			case 1:
134
				role = Role.EDITOR;
135
				break;
136
 
137
			case 2:
138
				role = Role.ADMIN;
139
				break;
140
 
141
			default:
142
				break;
143
			}
144
			User user = new User(name, password, role);
145
			users.put(name, user);
146
		}
147
 
148
	}
149
 
150
 
151
	public static UserManager getUserManager(){
152
		return userManager;
153
	}
154
 
155
	public Collection<User> getAllUsers(){
156
		Collection<User> allUsers = users.values();
157
		return allUsers;
158
	}
159
 
160
 
161
	public Set<String> getAllUserNames(){
162
		Set<String> allUsers = users.keySet();
163
		return allUsers;
164
	}
165
 
166
	public String getAdminName(){
167
		return this.admin;
168
	}
169
 
170
	public List<User> getAllUsersForRole(Role role){
171
		Collection<User> allUsers = users.values();
172
		List<User> usersForRole = new ArrayList<User>();
173
		for(User user: allUsers){
174
			if(user.getRole() == role){
175
				usersForRole.add(user);
176
			}
177
		}
178
		return usersForRole;
179
	}
180
 
181
 
182
	public boolean createUser(String username, String password, Role role){
183
		User user = new User(username, password, role);
184
		if(users.containsKey(username)){
185
			return false;
186
		}
187
		users.put(username, user);
188
		return true;
189
	}
190
 
191
	public boolean authenticateUser(String username, String password){
192
		User user = users.get(username);
193
		if(user != null && user.getPassword().equals(password)){
194
			return true;	
195
		}
196
		return false;
197
	}
198
 
199
	public User getUser(String username){
200
		return users.get(username);
201
	}
202
 
203
	public Role getUserRole(String username){
204
		return users.get(username).getRole();
205
	}
206
 
207
	public boolean canView(String username, long entityId){
208
		return RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.VIEW);
209
	}
210
 
211
	public boolean canDelete(String username, long entityId){
212
		if(RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.DELETE)){
213
			EntityState state = StorageManager.getStorageManager().getEntityMetadata(entityId);
214
			if(state.getStatus() != EntityStatus.READY){
215
				return true;
216
			}
217
		}
218
		return false;
219
	}
220
 
221
	public boolean canEdit(String username, long entityId){
222
		if(RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.EDIT)){
223
			EntityState state = StorageManager.getStorageManager().getEntityMetadata(entityId);
224
			if(state.getStatus() ==  EntityStatus.ASSIGNED &&  state.getAssignedTo().equalsIgnoreCase(username)){
225
				return true;
226
			}
227
		}
228
		return false;
229
	}
230
 
231
	public boolean canAssign(String username, long entityId){
232
		if(RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.ASSIGN)){
233
			EntityState state = StorageManager.getStorageManager().getEntityMetadata(entityId);
234
			if(state.getStatus() !=  EntityStatus.READY){
235
				return true;
236
			}else{
237
				if(userManager.getUserRole(username) == Role.ADMIN){
238
					return true;
239
				}
240
			}
241
		}
242
		return false;
243
	}
244
 
245
	public boolean canComplete(String username, long entityId){
246
		if(RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.COMPLETE)){
247
			EntityState state = StorageManager.getStorageManager().getEntityMetadata(entityId);
248
			if(state.getStatus() == EntityStatus.ASSIGNED && state.getAssignedTo().equalsIgnoreCase(username)){
249
				return true;
250
			}
251
		}
252
		return false;
253
	}
254
 
255
 
256
	public boolean canCreate(String username){
257
		return RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.CREATE);
258
	}
259
 
260
	public boolean canMarkReady(String username, long entityId){
261
		if(RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.READY)){
262
		EntityState state = StorageManager.getStorageManager().getEntityMetadata(entityId);
263
			if(state.getStatus() ==  EntityStatus.COMPLETE){
264
				return true;
265
			}
266
		}
267
		return false;
268
	}
269
 
270
	/*
271
	public boolean canView(String username, long entityId){
272
		return RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.VIEW);
273
	}
274
 
275
	public boolean canEdit(String username, long entityId){
276
		if(RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.EDIT)){
277
			EntityState state = StorageManager.getStorageManager().getEntityMetadata(entityId);
278
			if(state.getStatus() ==  EntityStatus.)
279
		}
280
		return false;
281
	}
282
 
283
	public boolean canDelete(String username, long entityId){
284
		return RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.DELETE);
285
	}
286
 
287
	public boolean canAssign(String username, long entityId){
288
		return RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.ASSIGN);
289
	}
290
	public boolean canComplete(String username, long entityId){
291
		return RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.COMPLETE);
292
	}
293
	public boolean canMarkReady(String username, long entityId){
294
		return RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.READY);
295
	}
296
	public boolean canCreate(String username, long entityId){
297
		return RoleManager.getRoleManager().hasPermission(userManager.getUserRole(username), Action.CREATE);
298
	}
299
*/
300
}