File indexing completed on 2024-05-12 16:25:56

0001 /*
0002    SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "role.h"
0008 #include "ruqola_debug.h"
0009 
0010 #include <QJsonArray>
0011 #include <QJsonObject>
0012 
0013 Role::Role() = default;
0014 
0015 QString Role::userId() const
0016 {
0017     return mUserId;
0018 }
0019 
0020 void Role::setUserId(const QString &userId)
0021 {
0022     mUserId = userId;
0023 }
0024 
0025 bool Role::isModerator() const
0026 {
0027     return mIsModerator;
0028 }
0029 
0030 void Role::setIsModerator(bool isModerator)
0031 {
0032     mIsModerator = isModerator;
0033 }
0034 
0035 bool Role::isLeader() const
0036 {
0037     return mIsLeader;
0038 }
0039 
0040 void Role::setIsLeader(bool isLeader)
0041 {
0042     mIsLeader = isLeader;
0043 }
0044 
0045 bool Role::isOwner() const
0046 {
0047     return mIsOwner;
0048 }
0049 
0050 void Role::setIsOwner(bool isOwner)
0051 {
0052     mIsOwner = isOwner;
0053 }
0054 
0055 bool Role::operator==(const Role &other) const
0056 {
0057     return (mIsOwner == other.isOwner()) && (mIsModerator == other.isModerator()) && (mIsLeader == other.isLeader()) && (mUserId == other.userId())
0058         && (mUserName == other.userName());
0059 }
0060 
0061 bool Role::isValid() const
0062 {
0063     return !mUserId.isEmpty();
0064 }
0065 
0066 void Role::updateRole(const QString &str, bool b)
0067 {
0068     if (str == QLatin1String("moderator")) {
0069         mIsModerator = b;
0070     } else if (str == QLatin1String("leader")) {
0071         mIsLeader = b;
0072     } else if (str == QLatin1String("owner")) {
0073         mIsOwner = b;
0074     } else {
0075         qCWarning(RUQOLA_LOG) << "Unknown role" << str;
0076     }
0077 }
0078 
0079 bool Role::hasARole() const
0080 {
0081     return mIsOwner || mIsModerator || mIsLeader;
0082 }
0083 
0084 QString Role::userName() const
0085 {
0086     return mUserName;
0087 }
0088 
0089 void Role::setUserName(const QString &newUserName)
0090 {
0091     mUserName = newUserName;
0092 }
0093 
0094 void Role::parseRole(const QJsonObject &obj)
0095 {
0096     const QJsonObject uObj = obj.value(QLatin1String("u")).toObject();
0097     mUserId = uObj.value(QLatin1String("_id")).toString();
0098     mUserName = uObj.value(QLatin1String("username")).toString();
0099     const QJsonArray roleArray = obj[QLatin1String("roles")].toArray();
0100     for (int i = 0; i < roleArray.count(); ++i) {
0101         const QString str = roleArray.at(i).toString();
0102         updateRole(str, true);
0103     }
0104 }
0105 
0106 QDebug operator<<(QDebug d, const Role &t)
0107 {
0108     d << "UserId: " << t.userId();
0109     d << "IsLeader: " << t.isLeader();
0110     d << "IsOwner: " << t.isOwner();
0111     d << "IsModerator: " << t.isModerator();
0112     d << "UserName: " << t.userName();
0113     return d;
0114 }