#include<string>
#include<iostream>
#include "teagent.h"
#include "teconnection.h"
#include "teexception.h"
#include "teauthuserctx.h"
#include "teauthwinctx.h"
#include "teobject.h"
#include "teadmin.h"
#include "tewinprincipal.h"
#include "teldapprincipal.h"
#include "teadmin_acl.h"
#include "teacl_template.h"
using namespace ERUCES;
using namespace std;
int main()
{
string strServer = "localhost";
long nPort = 8888;
string strAdminUser = "admin";
string strAdminPswd = "password1A";
try
{
auto_ptr<TEConnection> conn = TEConnection::createInstance(TEConnection::SecureConnection);
conn->open(strServer, nPort, strAdminUser, strAdminPswd);
cout << "Connected to " << strServer << " as " << strAdminUser << endl << endl;
TEAdmin admin;
admin.attachConnection(conn.operator->());
TEGroupInfo group;
group.setGroupName("testgroup");
admin.getPrincipal(group, group);
int id2Set = group.getPrincipalId();
TEUserAndPasswordInfo user;
user.setUserName("testuser");
admin.getPrincipal(user, user);
cout << "User ID = " << user.getPrincipalId() << endl;
cout << "User Name = " << user.getUserName() << endl << endl;
TEObjectContainer cont;
user.getGroupIds(cont);
cout << "Number of groups = " << cont.size() << endl;
int i;
bool isFound = false;
for (i=0; i < cont.size(); ++i)
{
int groupID = ((TEUInt32*)cont[i])->getValue();
if (groupID == id2Set) {
isFound = true;
}
cout << "\tGroup Id: " << groupID << endl;
}
if (!isFound) {
cout << "Required group is not in the list." << endl;
conn->close();
return -1;
}
int defaultGroupID = user.getDefaultGroup();
cout << "Before setting default group id, default group id = " << defaultGroupID << endl;
user. setDefaultGroup(id2Set);
admin.updatePrincipal(user);
cout << "Default group was set for the principal." << endl;
admin.getPrincipal(user, user);
user.getGroupIds(cont);
defaultGroupID = user.getDefaultGroup();
cout << "After setting default group id, default group id = " << defaultGroupID << endl;
admin.detachConnection();
conn->close();
cout << endl << "Disconnected from " << strServer << endl;
}
catch (TEException &e)
{
cout << e.getAllMessages().c_str() << endl;
}
catch (...)
{
cout << "Unexpected error" << endl;
}
return 0;
}