refs #502, added role support and user as data object (for distribution)

This commit is contained in:
Klaus Basan
2015-11-04 03:04:42 +01:00
committed by Mathew Sutcliffe
parent 23b310ac9b
commit 87a55edc04
5 changed files with 68 additions and 2 deletions

View File

@@ -0,0 +1,40 @@
/* Copyright (C) 2015
* swift project community / contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
//! \file
#ifndef BLACKCORE_DATA_AUTHENTICATEDUSER_H
#define BLACKCORE_DATA_AUTHENTICATEDUSER_H
#include "blackcore/blackcoreexport.h"
#include "blackcore/datacache.h"
#include "blackmisc/network/authenticateduser.h"
namespace BlackCore
{
namespace Data
{
//! Trait for for global setup data
struct AuthenticatedUser : public BlackCore::CDataTrait<BlackMisc::Network::CAuthenticatedUser>
{
//! Key in data cache
static const char *key() { return "readers/global/user"; }
//! Default value
static const BlackMisc::Network::CAuthenticatedUser &defaultValue()
{
static const BlackMisc::Network::CAuthenticatedUser user;
return user;
}
};
} // ns
} // ns
#endif // guard

View File

@@ -18,6 +18,9 @@ namespace BlackMisc
{
namespace Network
{
CAuthenticatedUser::CAuthenticatedUser()
{ }
CAuthenticatedUser::CAuthenticatedUser(int id, const QString &realname)
: IDatastoreObjectWithIntegerKey(id), m_realname(realname.trimmed())
{ }
@@ -87,6 +90,11 @@ namespace BlackMisc
return this->hasRole("ADMIN");
}
bool CAuthenticatedUser::isMappingAdmin() const
{
return this->hasRole("MAPPINGADMIN") || this->isAdmin();
}
CIcon CAuthenticatedUser::toIcon() const
{
return CIconList::iconByIndex(CIcons::StandardIconUser16);

View File

@@ -41,7 +41,7 @@ namespace BlackMisc
};
//! Default constructor.
CAuthenticatedUser() = default;
CAuthenticatedUser();
//! Constructor.
CAuthenticatedUser(int id, const QString &realname);
@@ -100,9 +100,12 @@ namespace BlackMisc
//! Roles
void setRoles(const CRoleList &roles) { m_roles = roles; }
//! Has roles?
//! Has role?
bool hasRole(const QString &roleName) const { return m_roles.hasRole(roleName); }
//! Has any role?
bool hasAnyRole(const QStringList &roles) const { return m_roles.hasAnyRole(roles); }
//! Country
const BlackMisc::CCountry &getCountry() const { return m_country; }
@@ -112,6 +115,9 @@ namespace BlackMisc
//! Admin?
bool isAdmin() const;
//! Admin?
bool isMappingAdmin() const;
//! Authenticated
void setAuthenticated(bool authenticated) { m_authenticated = authenticated; }

View File

@@ -25,6 +25,15 @@ namespace BlackMisc
return hasRole(role.getName());
}
bool CRoleList::hasAnyRole(const QStringList &roles) const
{
for (const QString &r : roles)
{
if (this->hasRole(r)) { return true; }
}
return false;
}
CRoleList::CRoleList(const CSequence<CRole> &other) :
CSequence<CRole>(other)
{ }

View File

@@ -38,6 +38,9 @@ namespace BlackMisc
//! Has role?
bool hasRole(const CRole &role) const;
//! Has any role?
bool hasAnyRole(const QStringList &roles) const;
//! Construct from a base class object.
CRoleList(const CSequence<CRole> &other);