import ori.data.IDomain;
import ori.data.IPermissionList;
import ori.data.IToken;
import ori.data.IUserRoleList;
import ori.impl.PermissionList;
import ori.impl.UserRoleList;
import ori.impl.encoder.Md5HexaEncoder;
public class Test
{
//roles
private static final String ADMINISTRATOR_ROLE = "administrator";
private static final String USER_ROLE = "user";
//users
private static final String ADMIN_LOGIN = "admin";
private static final String ADMIN_PASSWORD = "alma";
private static final String ENCODED_ADMIN_PASSWORD = "ebbc3c26a34b609dc46f5c3378f96e08";
public static final String LOGIN_A = "a";
public static final String PASSWORD_A = "a";
public static final String ENCODED_PASSWORD_A = "0cc175b9c0f1b6a831c399e269772661";
public static final String LOGIN_B = "b";
public static final String PASSWORD_B = "b";
public static final String ENCODED_PASSWORD_B = "92eb5ffee6ae2fec3ad71c777531578f";
public static final String LOGIN_C = "c";
public static final String PASSWORD_C = "c";
public static final String ENCODED_PASSWORD_C = "4a8a08f09d37b73795649038408b5f33";
//actions
private static final String WRITE_ACTION = "write";
private static final String READ_ACTION = "read";
//modules
private static final String SECRET_MODULE = "Secret";
private static final String PUBLIC_MODULE = "Public";
public static void main(String[] args)
{
IDomain testDomain = null;
try
{
IUserRoleListProvider userRoleListProvider = new UserRoleListProvider();
IRolePermissionListProvider rolePermissionListProvider = new RolePermissionListProvider();
IUserPermissionListProvider userPermissionListProvider = new UserPermissionListProvider();
IUserAuthenticator userAuthenticator = new UserAuthenticator();
IPasswordEncoder passwordEncoder = new Md5HexaEncoder();
// create a IDomain
testDomain = Ori.createDomain(
userRoleListProvider,
rolePermissionListProvider,
userPermissionListProvider,
userAuthenticator,
passwordEncoder,
ADMIN_LOGIN, ENCODED_ADMIN_PASSWORD);
// Login
IToken token = testDomain.login(ADMIN_LOGIN,ADMIN_PASSWORD);
// check permission
boolean result = token.hasPermission(SECRET_MODULE,READ_ACTION);
System.out.println("User '"+token.getLogin()+"' has permission to " +
"perform 'read' on 'secret'? "+result);
// Logout
token.invalidate();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
testDomain.destroy();
}
}
private static class UserRoleListProvider implements IUserRoleListProvider
{
public IUserRoleList getUserRoleList()
{
UserRoleList result = new UserRoleList();
result.addRoleToUser(LOGIN_A, ADMINISTRATOR_ROLE);
result.addRoleToUser(LOGIN_A, USER_ROLE);
result.addRoleToUser(LOGIN_B, USER_ROLE);
result.addRoleToUser(LOGIN_C, USER_ROLE);
return result;
}
}
private static class UserAuthenticator implements IUserAuthenticator
{
public boolean authenticate(String login, String encodedPassword) throws Exception
{
if (login.equals(LOGIN_A) && encodedPassword.equals(ENCODED_PASSWORD_A))
return true;
else if (login.equals(LOGIN_B) && encodedPassword.equals(ENCODED_PASSWORD_B))
return true;
else if (login.equals(LOGIN_C) && encodedPassword.equals(ENCODED_PASSWORD_C))
return true;
else return false;
}
}
private static class RolePermissionListProvider implements IRolePermissionListProvider
{
public IPermissionList getRolePermissionList()
{
PermissionList pl = new PermissionList();
pl.addPermission(ADMINISTRATOR_ROLE, PUBLIC_MODULE, READ_ACTION);
pl.addPermission(ADMINISTRATOR_ROLE, PUBLIC_MODULE, WRITE_ACTION);
pl.addPermission(ADMINISTRATOR_ROLE, SECRET_MODULE, READ_ACTION);
pl.addPermission(ADMINISTRATOR_ROLE, SECRET_MODULE, WRITE_ACTION);
pl.addPermission(USER_ROLE, PUBLIC_MODULE, READ_ACTION);
pl.addPermission(USER_ROLE, PUBLIC_MODULE, WRITE_ACTION);
return pl;
}
}
private static class UserPermissionListProvider implements IUserPermissionListProvider
{
public IPermissionList getUserPermissionList()
{
PermissionList pl = new PermissionList();
pl.addPermission(LOGIN_C,SECRET_MODULE,READ_ACTION);
return pl;
}
}
}
|