Files
pvAccess/testApp/utils/showauth.cpp
2019-09-12 09:47:23 -07:00

46 lines
1.1 KiB
C++

/**
* Copyright - See the COPYRIGHT that is included with this distribution.
* pvAccessCPP is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
*/
#include <vector>
#include <stdexcept>
#include <iostream>
#include <osiProcess.h>
#include <pv/security.h>
namespace pva = epics::pvAccess;
int main(int argc, char *argv[])
{
int ret = 0;
try {
std::vector<char> name(256u);
if(osiGetUserName(&name[0], name.size())!=osiGetUserNameSuccess)
throw std::runtime_error("Unable to determine username");
name[name.size()-1] = '\0';
const char *user = argc<=1 ? &name[0] : argv[1];
std::cout<<"User: "<<user<<"\n";
pva::PeerInfo::roles_t roles;
pva::osdGetRoles(user, roles);
std::cout<<"Groups: \n";
for(pva::PeerInfo::roles_t::const_iterator it(roles.begin()), end(roles.end());
it!=end; ++it)
{
std::cout<<" "<<*it<<"\n";
}
} catch(std::exception& e) {
std::cerr<<"Error: "<<e.what()<<"\n";
ret = 2;
}
return ret;
}