1 /* 2 SPDX-FileCopyrightText: 2019-2021 Laurent Montel <montel@kde.org> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #include "role.h" 8 #include "ruqola_debug.h" 9 10 #include <QJsonArray> 11 12 Role::Role() = default; 13 userId() const14QString Role::userId() const 15 { 16 return mUserId; 17 } 18 setUserId(const QString & userId)19void Role::setUserId(const QString &userId) 20 { 21 mUserId = userId; 22 } 23 isModerator() const24bool Role::isModerator() const 25 { 26 return mIsModerator; 27 } 28 setIsModerator(bool isModerator)29void Role::setIsModerator(bool isModerator) 30 { 31 mIsModerator = isModerator; 32 } 33 isLeader() const34bool Role::isLeader() const 35 { 36 return mIsLeader; 37 } 38 setIsLeader(bool isLeader)39void Role::setIsLeader(bool isLeader) 40 { 41 mIsLeader = isLeader; 42 } 43 isOwner() const44bool Role::isOwner() const 45 { 46 return mIsOwner; 47 } 48 setIsOwner(bool isOwner)49void Role::setIsOwner(bool isOwner) 50 { 51 mIsOwner = isOwner; 52 } 53 operator ==(const Role & other) const54bool Role::operator==(const Role &other) const 55 { 56 return (mIsOwner == other.isOwner()) && (mIsModerator == other.isModerator()) && (mIsLeader == other.isLeader()) && (mUserId == other.userId()); 57 } 58 isValid() const59bool Role::isValid() const 60 { 61 return !mUserId.isEmpty(); 62 } 63 updateRole(const QString & str,bool b)64void Role::updateRole(const QString &str, bool b) 65 { 66 if (str == QLatin1String("moderator")) { 67 mIsModerator = b; 68 } else if (str == QLatin1String("leader")) { 69 mIsLeader = b; 70 } else if (str == QLatin1String("owner")) { 71 mIsOwner = b; 72 } else { 73 qCWarning(RUQOLA_LOG) << "Unknown role" << str; 74 } 75 } 76 hasARole() const77bool Role::hasARole() const 78 { 79 return mIsOwner || mIsModerator || mIsLeader; 80 } 81 parseRole(const QJsonObject & obj)82void Role::parseRole(const QJsonObject &obj) 83 { 84 mUserId = obj.value(QLatin1String("u")).toObject().value(QLatin1String("_id")).toString(); 85 const QJsonArray roleArray = obj[QStringLiteral("roles")].toArray(); 86 for (int i = 0; i < roleArray.count(); ++i) { 87 const QString str = roleArray.at(i).toString(); 88 updateRole(str, true); 89 } 90 } 91 operator <<(QDebug d,const Role & t)92QDebug operator<<(QDebug d, const Role &t) 93 { 94 d << "UserId: " << t.userId(); 95 d << "IsLeader: " << t.isLeader(); 96 d << "IsOwner: " << t.isOwner(); 97 d << "IsModerator: " << t.isModerator(); 98 return d; 99 } 100