|
What this is
Other links
The source code
/*******************************************************************************
* Copyright (c) 2000, 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* IBM Corporation - added the following constants
*******************************************************************************/
package eclipseCon2005.KCH.AuthDemo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import org.eclipse.jface.util.ListenerList;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import eclipseCon2005.KCH.AuthDemo.perspectives.AuthPerspective;
import eclipseCon2005.KCH.AuthDemo.perspectives.NoAuthPerspective;
public class Auth {
public interface AuthListener {
public void authChanged();
}
private ListenerList listenerList = new ListenerList();
private AuthEntry currentUser;
private class AuthEntry {
String user;
String password;
Set activites;
}
private static Auth instance;
private List authTable = new ArrayList();
private Auth() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
AuthDemoPlugin.getDefault().getBundle().getResource(
"authtable").openStream()));
for (String line = reader.readLine(); line != null; line = reader.readLine()) {
AuthEntry entry = new AuthEntry();
StringTokenizer tok = new StringTokenizer(line, " ");
entry.user = tok.nextToken();
entry.password = tok.nextToken();
String activities = tok.nextToken();
entry.activites = new HashSet(Arrays.asList(activities.split(",")));
authTable.add(entry);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static Auth getInstance() {
if (instance == null) {
instance = new Auth();
}
return instance;
}
public boolean login(String user, String password) {
for (Iterator i = authTable.iterator(); i.hasNext();) {
AuthEntry entry = (AuthEntry) i.next();
if (entry.user.equals(user) && entry.password.equals(password)) {
IWorkbench workbench = PlatformUI.getWorkbench();
workbench.getActivitySupport().setEnabledActivityIds(
entry.activites);
workbench.getActiveWorkbenchWindow().getActivePage()
.setPerspective(
workbench.getPerspectiveRegistry()
.findPerspectiveWithId(
AuthPerspective.ID));
currentUser = entry;
notifyListeners();
return true;
}
}
return false;
}
private void notifyListeners() {
Object [] listeners = listenerList.getListeners();
for (int k = 0; k < listeners.length; k++) {
AuthListener l = (AuthListener) listeners[k];
l.authChanged();
}
}
public void logout() {
currentUser = null;
IWorkbench workbench = PlatformUI.getWorkbench();
workbench.getActivitySupport().setEnabledActivityIds(
Collections.EMPTY_SET);
workbench.getActiveWorkbenchWindow().getActivePage().closePerspective(workbench.getPerspectiveRegistry()
.findPerspectiveWithId(
AuthPerspective.ID), false, false);
workbench.getActiveWorkbenchWindow().getActivePage().setPerspective(
workbench.getPerspectiveRegistry().findPerspectiveWithId(
NoAuthPerspective.ID));
notifyListeners();
}
public String getUserName() {
return currentUser == null ? null : currentUser.user;
}
public boolean isManager() {
return currentUser == null ? false : currentUser.activites.contains("managerActivity");
}
public void addAuthListener(AuthListener listener) {
listenerList.add(listener);
}
public void removeAuthListener(AuthListener listener) {
listenerList.remove(listener);
}
public Object[] getUserData() {
ArrayList users = new ArrayList();
for (Iterator i = authTable.iterator(); i.hasNext();) {
AuthEntry element = (AuthEntry) i.next();
users.add(new Object[] {element.user, element.activites.contains("managerActivity") ? "boss" : "monkey"});
}
return users.toArray();
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.