Skip to main content

Working with Roles

Associating particular tasks to users..


Sample_Admin_Role_Operations.java

The following code sample illustrates how to retrieve a list of existing Roles and the operations associated with a particular Role, create a new Role, assign a Role to a user and then remove it.  The default Roles created when a kS is installed cannot be deleted or updated.

import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
import java.util.Vector;
import com.eruces.teadmin.Administration;
import com.eruces.teadmin.Operation;
import com.eruces.teadmin.Role;
import com.eruces.teadmin.UserAndPasswordInfo;
import com.eruces.teagent.PList;
import com.eruces.teagent.TEAgentConnection;
public class Sample_Admin_Role_Operations {
public static Map<Long, String> listAllRoles(TEAgentConnection conn) {

Map<Long, String> all_roles = new TreeMap<Long, String>();

try {
Administration admin = new Administration();
admin.attachConnection(conn);

Role[] arr = admin.getAllRoles();

for (int i = 0; i < arr.length; i++) {
all_roles.put(arr[i].getRoleID(), arr[i].getRoleName());
}

System.out.println("Retrieved " + all_roles.size() + " roles.");

admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}

return all_roles;
}

public static Map<Long, String> listAllOperations(TEAgentConnection conn) {

Map<Long, String> all_operations = new TreeMap<Long, String>();

try {

Administration admin = new Administration();
admin.attachConnection(conn);

Operation[] arr = admin.getAllOperations();

for (int i = 0; i < arr.length; i++) {
all_operations.put(arr[i].m_nID, arr[i].m_strName);
}

//System.out.println("Retrieved " + all_operations.size() + " operations.");

admin.detachConnection();

}
catch (Exception e) {
e.printStackTrace();
}

return all_operations;
}

public static void addRole(TEAgentConnection conn, String role_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);

Role roles[] = new Role[1];
roles[0] = new Role();

roles[0].setRoleName(role_name);
admin.createRoles(roles);

System.out.println("Added role \"" + role_name + "\".");

admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}

public static void removeRole(TEAgentConnection conn, String role_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);

long id = 0;

Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
id = r.getRoleID();
break;
}
}

admin.removeRole(id);

System.out.println("Removed role \"" + role_name + "\".");

admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}

public static void addRole_Principal(TEAgentConnection conn, String user_name, String role_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);

UserAndPasswordInfo user = admin.getUserByName(user_name);

Role role = null;
Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
role = r;
break;
}
}

long roles[] = new long[1];
roles[0] = role.getRoleID();

admin.assignRoles(user, roles);

System.out.println("Added role \"" + role_name + "\" to user \"" + user_name + "\".");

admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}

public static void removeRole_Principal(TEAgentConnection conn, String user_name, String role_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);

UserAndPasswordInfo user = admin.getUserByName(user_name);

Role role = null;
Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
role = r;
break;
}
}

long roles[] = new long[1];
roles[0] = role.getRoleID();

admin.removeRoles(user, roles);

System.out.println("Removed role \"" + role_name + "\" from user \"" + user_name + "\".");

admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}

public static Vector<String> role_ListOperations(TEAgentConnection conn, String role_name) {

Vector<String> out = new Vector<String>();
try {
Administration admin = new Administration();
admin.attachConnection(conn);

Map<Long, String> all_operations = listAllOperations(conn);

Role role = null;

Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
role = r;
break;
}
}

PList test = role.getOperations();
Long[] operations = test.toLongArray();

for (int i = 0; i < operations.length; i++) {
out.add(all_operations.get(operations[i]));
}

System.out.println("Retrieved " + out.size() + " operations.");

admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
return out;
}

public static void role_AddOperationTo(TEAgentConnection conn, String role_name, String operation_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);

Role role = null;

Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
role = r;
break;
}
}

Long operation = null;

Map<Long, String> all_operations = listAllOperations(conn);
for (Entry<Long, String> e : all_operations.entrySet()) {
if (e.getValue().equals(operation_name)) {
operation = e.getKey();
break;
}
}

role.addOperation(operation);

Role roles_to_update[] = new Role[1];
roles_to_update[0] = role;
admin.updateRoles(roles_to_update);

System.out.println("Added operation \"" + operation_name + "\" to role \"" + role_name + "\".");

}
catch (Exception e) {
e.printStackTrace();
}
}

public static void role_RemoveOperationFrom(TEAgentConnection conn, String role_name, String operation_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);

Role role = null;

Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
role = r;
break;
}
}

Long operation = null;

Map<Long, String> all_operations = listAllOperations(conn);
for (Entry<Long, String> e : all_operations.entrySet()) {
if (e.getValue().equals(operation_name)) {
operation = e.getKey();
break;
}
}

role.removeOperation(operation);

Role roles_to_update[] = new Role[1];
roles_to_update[0] = role;
admin.updateRoles(roles_to_update);

System.out.println("Removed operation \"" + operation_name + "\" from role \"" + role_name + "\".");

}
catch (Exception e) {
e.printStackTrace();
}
}

}