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() const14 QString Role::userId() const
15 {
16     return mUserId;
17 }
18 
setUserId(const QString & userId)19 void Role::setUserId(const QString &userId)
20 {
21     mUserId = userId;
22 }
23 
isModerator() const24 bool Role::isModerator() const
25 {
26     return mIsModerator;
27 }
28 
setIsModerator(bool isModerator)29 void Role::setIsModerator(bool isModerator)
30 {
31     mIsModerator = isModerator;
32 }
33 
isLeader() const34 bool Role::isLeader() const
35 {
36     return mIsLeader;
37 }
38 
setIsLeader(bool isLeader)39 void Role::setIsLeader(bool isLeader)
40 {
41     mIsLeader = isLeader;
42 }
43 
isOwner() const44 bool Role::isOwner() const
45 {
46     return mIsOwner;
47 }
48 
setIsOwner(bool isOwner)49 void Role::setIsOwner(bool isOwner)
50 {
51     mIsOwner = isOwner;
52 }
53 
operator ==(const Role & other) const54 bool Role::operator==(const Role &other) const
55 {
56     return (mIsOwner == other.isOwner()) && (mIsModerator == other.isModerator()) && (mIsLeader == other.isLeader()) && (mUserId == other.userId());
57 }
58 
isValid() const59 bool Role::isValid() const
60 {
61     return !mUserId.isEmpty();
62 }
63 
updateRole(const QString & str,bool b)64 void 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() const77 bool Role::hasARole() const
78 {
79     return mIsOwner || mIsModerator || mIsLeader;
80 }
81 
parseRole(const QJsonObject & obj)82 void 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)92 QDebug 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