sitter requested changes to this revision.
sitter added a comment.
This revision now requires changes to proceed.


  The way details are enumerated needs changing IMO. And this effectively bumps 
the required polkitqt version through exactly one call, so maybe an #if 
conditional to not have the forced bump might be good

INLINE COMMENTS

> AuthBackend.h:61
>      virtual bool isCallerAuthorized(const QString &action, QByteArray 
> callerID) = 0;
> +    virtual bool isCallerAuthorized(const QString &action, const DetailsMap 
> &details, QByteArray callerID) = 0; // KF6 TODO Merge
>      virtual bool actionExists(const QString &action);

I didn't check super carefully but at a glance the backend api is not public 
API so we could probably refactor this right now already.

Also, shouldn't the callerID be a const ref?

> DBusHelperProxy.cpp:109
>  
> +    qDebug() << details;
>      QList<QVariant> args;

left over debugging? either remove or categorize

> Polkit1Backend.cpp:187
> +    QMap<QString, QString> polkit1Details;
> +    for (auto it = details.begin(); it != details.end(); ++it) {
> +        polkit1Details.insert(it.key(), it.value().toString());

you want constBegin/End here

> Polkit1Backend.cpp:193
>              &e, SLOT(requestQuit(PolkitQt1::Authority::Result)));
> -    authority->checkAuthorization(action, subject, 
> PolkitQt1::Authority::AllowUserInteraction);
> +    authority->checkAuthorizationWithDetails(action, subject, 
> PolkitQt1::Authority::AllowUserInteraction, polkit1Details);
>      e.exec();

looks to me this was only added 4 months ago. so this would probably require a 
version bump. seeing as we are fairly conservative with frameworks' 
requirements it may be better to `if version>=whatevs` the call.

> kauthaction.cpp:77
>  Action::Action(const QString &name, const QString &details)
>      : d(new ActionData())
>  {

you could just delegate to the new constructor here instead of having two code 
duplicated ctors.

> kauthaction.h:236
> +     */
> +    void setDetails(const DetailsMap &details);
> +

this seems like super leaky abstraction. you are allowing the caller to set 
backend specific stuff here. I think it'd be much better to make an enum for 
detail types, and have this be a QMap of enum,QVariant.

if the caller sets polkit.message then that won't apply to the mac backend even 
if someone were to implement the relevant functionality there. if it is a 
general purpose enum key each backend can easily implement or ignore as 
necessary

> kauthaction.h:246
> +     */
> +    QString details() const; // KF6 TODO: Remove
>  

Should the old functions maybe be marked deprecated?

REPOSITORY
  R283 KAuth

REVISION DETAIL
  https://phabricator.kde.org/D21795

To: chinmoyr, apol, bruns, davidedmundson, #frameworks, dfaure, cfeck, sitter
Cc: sitter, mreeves, kde-frameworks-devel, LeGast00n, sbergeron, michaelh, 
ngraham, bruns

Reply via email to