You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
228 lines
4.8 KiB
228 lines
4.8 KiB
/*
|
|
* This file is part of the Polkit-tqt project
|
|
* Copyright (C) 2009 Lukas Tinkl <ltinkl@redhat.com>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Library General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Library General Public License
|
|
* along with this library; see the file COPYING.LIB. If not, write to
|
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include "polkittqt1-identity.h"
|
|
|
|
#include <polkit/polkit.h>
|
|
|
|
#include <TQtCore/TQDebug>
|
|
|
|
namespace PolkitTQt1
|
|
{
|
|
|
|
class Identity::Data : public TQSharedData
|
|
{
|
|
public:
|
|
Data() : identity(0) {}
|
|
Data(const Data& other)
|
|
: TQSharedData(other)
|
|
, identity(other.identity)
|
|
{
|
|
if (identity) {
|
|
g_object_ref(identity);
|
|
}
|
|
}
|
|
~Data()
|
|
{
|
|
if (identity) {
|
|
g_object_unref(identity);
|
|
}
|
|
}
|
|
|
|
PolkitIdentity *identity;
|
|
};
|
|
|
|
Identity::Identity()
|
|
: d(new Data)
|
|
{
|
|
g_type_init();
|
|
}
|
|
|
|
Identity::Identity(PolkitIdentity *polkitIdentity)
|
|
: d(new Data)
|
|
{
|
|
g_type_init();
|
|
d->identity = polkitIdentity;
|
|
|
|
if (d->identity) {
|
|
g_object_ref(d->identity);
|
|
}
|
|
}
|
|
|
|
Identity::Identity(const PolkitTQt1::Identity& other)
|
|
: d(other.d)
|
|
{
|
|
|
|
}
|
|
|
|
Identity::~Identity()
|
|
{
|
|
}
|
|
|
|
Identity& Identity::operator=(const PolkitTQt1::Identity& other)
|
|
{
|
|
d = other.d;
|
|
return *this;
|
|
}
|
|
|
|
bool Identity::isValid() const
|
|
{
|
|
return d->identity != NULL;
|
|
}
|
|
|
|
PolkitIdentity *Identity::identity() const
|
|
{
|
|
return d->identity;
|
|
}
|
|
|
|
void Identity::setIdentity(PolkitIdentity *identity)
|
|
{
|
|
if (d->identity == identity) {
|
|
return;
|
|
}
|
|
|
|
if (d->identity) {
|
|
g_object_unref(d->identity);
|
|
}
|
|
|
|
d->identity = identity;
|
|
|
|
if (d->identity) {
|
|
g_object_ref(d->identity);
|
|
}
|
|
}
|
|
|
|
TQString Identity::toString() const
|
|
{
|
|
Q_ASSERT(d->identity);
|
|
return TQString::fromUtf8(polkit_identity_to_string(d->identity));
|
|
}
|
|
|
|
Identity Identity::fromString(const TQString &string)
|
|
{
|
|
GError *error = NULL;
|
|
PolkitIdentity *pkIdentity = polkit_identity_from_string(string.toUtf8().data(), &error);
|
|
if (error != NULL) {
|
|
tqWarning() << TQString("Cannot create Identity from string: %1").arg(error->message);
|
|
return Identity();
|
|
}
|
|
return Identity(pkIdentity);
|
|
}
|
|
|
|
UnixGroupIdentity Identity::toUnixGroupIdentity()
|
|
{
|
|
UnixGroupIdentity *ugid = static_cast< UnixGroupIdentity* >(this);
|
|
if (!ugid) {
|
|
return UnixGroupIdentity();
|
|
}
|
|
|
|
return *ugid;
|
|
}
|
|
|
|
UnixUserIdentity Identity::toUnixUserIdentity()
|
|
{
|
|
UnixUserIdentity *uuid = static_cast< UnixUserIdentity* >(this);
|
|
if (!uuid) {
|
|
return UnixUserIdentity();
|
|
}
|
|
|
|
return *uuid;
|
|
}
|
|
|
|
UnixUserIdentity::UnixUserIdentity(const TQString &name)
|
|
: Identity()
|
|
{
|
|
GError *error = NULL;
|
|
setIdentity(polkit_unix_user_new_for_name(name.toUtf8().data(), &error));
|
|
if (error != NULL) {
|
|
tqWarning() << TQString("Cannot create UnixUserIdentity: %1").arg(error->message);
|
|
setIdentity(NULL);
|
|
}
|
|
}
|
|
|
|
UnixUserIdentity::UnixUserIdentity(uid_t uid)
|
|
: Identity()
|
|
{
|
|
setIdentity(polkit_unix_user_new(uid));
|
|
}
|
|
|
|
UnixUserIdentity::UnixUserIdentity(PolkitUnixUser *pkUnixUser)
|
|
: Identity((PolkitIdentity *)pkUnixUser)
|
|
{
|
|
|
|
}
|
|
|
|
UnixUserIdentity::UnixUserIdentity()
|
|
: Identity()
|
|
{
|
|
|
|
}
|
|
|
|
uid_t UnixUserIdentity::uid() const
|
|
{
|
|
return polkit_unix_user_get_uid((PolkitUnixUser *) identity());
|
|
}
|
|
|
|
void UnixUserIdentity::setUid(uid_t uid)
|
|
{
|
|
polkit_unix_user_set_uid((PolkitUnixUser *) identity(), uid);
|
|
}
|
|
|
|
UnixGroupIdentity::UnixGroupIdentity(const TQString &name)
|
|
: Identity()
|
|
{
|
|
GError *error = NULL;
|
|
setIdentity(polkit_unix_group_new_for_name(name.toUtf8().data(), &error));
|
|
if (error != NULL) {
|
|
tqWarning() << TQString("Cannot create UnixGroupIdentity: %1").arg(error->message);
|
|
setIdentity(NULL);
|
|
}
|
|
}
|
|
|
|
UnixGroupIdentity::UnixGroupIdentity(gid_t gid)
|
|
: Identity()
|
|
{
|
|
setIdentity(polkit_unix_group_new(gid));
|
|
}
|
|
|
|
UnixGroupIdentity::UnixGroupIdentity(PolkitUnixGroup *pkUnixGroup)
|
|
: Identity((PolkitIdentity *) pkUnixGroup)
|
|
{
|
|
|
|
}
|
|
|
|
UnixGroupIdentity::UnixGroupIdentity()
|
|
: Identity()
|
|
{
|
|
|
|
}
|
|
|
|
gid_t UnixGroupIdentity::gid() const
|
|
{
|
|
return polkit_unix_group_get_gid((PolkitUnixGroup *) identity());
|
|
}
|
|
|
|
void UnixGroupIdentity::setGid(gid_t gid)
|
|
{
|
|
polkit_unix_group_set_gid((PolkitUnixGroup *) identity(), gid);
|
|
}
|
|
|
|
}
|