|
libfuoten 0.8.1
Qt based library to access the ownCloud/Nextcloud News App API
|
#include <Fuoten/API/LoginFlowV2>
Properties | |
| int | pollingInterval |
| int | pollingRequestTimeout |
| int | pollingTimeout |
| int | secondsLeft |
| Properties inherited from Component | |
| Fuoten::AbstractConfiguration * | configuration |
| Fuoten::Error * | error |
| bool | inOperation |
| Fuoten::AbstractNotificator * | notificator |
| quint16 | requestTimeout |
| Fuoten::AbstractStorage * | storage |
| bool | useStorage |
| Fuoten::WipeManager * | wipeManager |
Signals | |
| void | gotLoginUrl (const QUrl &url) |
| void | pollingIntervalChanged (int pollingInterval) |
| void | pollingRequestTimeoutChanged (int pollingRequestTimeout) |
| void | pollingTimeoutChanged (int pollingTimeout) |
| void | secondsLeftChanged (int secondsLeft) |
| Signals inherited from Component | |
| void | configurationChanged (Fuoten::AbstractConfiguration *configuration) |
| void | errorChanged (Fuoten::Error *error) |
| void | failed (Fuoten::Error *error) |
| void | inOperationChanged (bool inOperation) |
| void | notificatorChanged (Fuoten::AbstractNotificator *notificator) |
| void | requestTimeoutChanged (quint16 requestTimeout) |
| void | sslErrors (QNetworkReply *reply, const QList< QSslError > &errors) |
| void | storageChanged (Fuoten::AbstractStorage *storage) |
| void | succeeded (const QJsonDocument &result) |
| void | useStorageChanged (bool useStorage) |
| void | wipeManagerChanged (Fuoten::WipeManager *wipeManager) |
Protected Member Functions | |
| bool | checkInput () override |
| void | successCallback () override |
| Protected Member Functions inherited from Component | |
| void | addRequestHeader (const QByteArray &headerName, const QByteArray &headerValue) |
| void | addRequestHeaders (const QHash< QByteArray, QByteArray > &headers) |
| virtual bool | checkOutput () |
| virtual void | extractError (QNetworkReply *reply) |
| QJsonDocument | jsonResult () const |
| void | notify (AbstractNotificator::Type type, QtMsgType severity, const QVariant &data) const |
| void | notify (const Error *e) const |
| QHash< QByteArray, QByteArray > | requestHeaders () const |
| void | sendRequest () |
| void | setApiRoute (const QString &route) |
| void | setApiRoute (const QStringList &routeParts) |
| void | setError (Error *nError) |
| void | setExpectedJSONType (ExpectedJSONType type) |
| void | setInOperation (bool nInOperation) |
| void | setNetworkOperation (QNetworkAccessManager::Operation operation) |
| void | setPayload (const QByteArray &payload) |
| void | setPayload (const QJsonObject &payload) |
| void | setRequestHeaders (const QHash< QByteArray, QByteArray > &headers) |
| void | setRequiresAuth (bool reqAuth) |
| void | setUrlQuery (const QUrlQuery &query) |
Additional Inherited Members | |
| Public Types inherited from Component | |
| enum | ExpectedJSONType : quint8 { Empty = 0 , Array = 1 , Object = 2 } |
| Static Public Member Functions inherited from Component | |
| static AbstractConfiguration * | defaultConfiguration () |
| static AbstractNotificator * | defaultNotificator () |
| static AbstractStorage * | defaultStorage () |
| static WipeManager * | defaultWipeManager () |
| static AbstractNamFactory * | networkAccessManagerFactory () |
| static void | setDefaultConfiguration (AbstractConfiguration *config) |
| static void | setDefaultNotificator (AbstractNotificator *notificator) |
| static void | setDefaultStorage (AbstractStorage *storage) |
| static void | setDefaultWipeManager (WipeManager *wipeManager) |
| static void | setNetworkAccessManagerFactory (AbstractNamFactory *factory) |
Manages the Login Flow v2 to request an application password.
Nextcloud’s Login Flow can be used to request login credentials specific to every single client. This will assure that each client gets its own set of credentials and has the advantage that a client never stores the password of the user and that the user can revoke access on a per client basis from the web.
This class helps to use the Login Flow v2 that uses an external browser window (normally the user’s default browser) to request login credentials. The Nextcloud server to request the credentials from is read from Component::configuration, so there has to be at least the host information be set. You should also reimplement AbstractConfiguration::getLoginFlowUserAgent() because it is used to show the user a descriptive name of the application that requests the login credentials.
The first request will be sent to <server>/index.php/login/v2 to get the login url opened in the external browser and to the polling endpoint and the polling token. If that was successful, gotLoginUrl() will be emitted that will also have the login url for the user.
Directly after emitting gotLoginUrl() the polling for the credentials starts while the user authorizes the application. If the authorization succeedes, the requested credentials will be stored with AbstractConfiguration::setLoginFlowCredentials(), also the Component::succeeded() signal will be emitted containing the retreived JSON credential data.
If something failed, Component::failed() will be emitted and Component::error() will contain the Error data object.
|
readwrite |
Sets the interval in seconds at which polling requests are sent to the server.
The default value is 2 seconds. Unless the pollingTimeout timer times out or the authorization succeeded, n seconds after the last successful polling request, a new polling request will be sent.
| bool | pollingInterval() const |
| void | setPollingInterval(int pollingInterval) |
| void | pollingIntervalChanged(int pollingInterval) |
|
readwrite |
Sets the timeout in seconds for single polling requests.
The default value is 5 seconds. Every single polling request will time out after the set seconds if it does not receive an answer. After 5 consecutive timeouts, the login flow will be canceled, Component::error() will return a valid Error object and the Component::failed() signal will be emitted.
| bool | pollingRequestTimeout() const |
| void | setPollingRequestTimeout(int pollingRequestTimeout) |
| void | pollingRequestTimeoutChanged(int pollingRequestTimeout) |
|
readwrite |
Sets the timeout in seconds at which the authorisation request has to be succeeded.
The default value is 300 seconds. If this timeout expires, the login flow will be canceled and polling will be stopped. Component::error() will return a valid Error object and the Component::failed() signal will be emitted.
This property can not be changed while Component::inOperation() returns true.
| bool | pollingTimeout() const |
| void | setPollingTimeout(int pollingTimeout) |
| void | pollingTimeoutChanged(int pollingTimeout) |
|
read |
This property holds the seconds left until the pollingTimeout timer times out.
The default value is 0. While polling runs, secondsLeftChanged() will be emitted every second.
| bool | secondsLeft() const |
| void | secondsLeftChanged(int secondsLeft) |
|
explicit |
Constructs a new LoginFlowV2 object with the given parent.
|
override |
Destroys the LoginFlowV2 object.
|
overrideprotectedvirtual |
Always returns true.
Reimplemented from Component.
|
overridevirtual |
Executes the API request.
Implements Component.
|
signal |
Emitted when the login url has been requested from the Nextcloud server.
The emitted url should be opened by a web browser to load and show the authorization login page to the user. This signal is emitted in the successCallback().
| int pollingInterval | ( | ) | const |
Returns the polling interval in seconds.
|
signal |
Emitted when the pollingInterval has been changed.
| int pollingRequestTimeout | ( | ) | const |
Returns the timeout for the single polling requests in seconds.
|
signal |
Emitted when the pollingRequestTimeout has been changed.
| int pollingTimeout | ( | ) | const |
Returns the polling timeout in seconds.
|
signal |
Emitted when the pollingTimeout has been changed.
| int secondsLeft | ( | ) | const |
Returns the remaining seconds until pollingTimeout times out.
The default value is 0.
|
signal |
Emitted every seconds when the polling is active.
The secondsLeft are the remaining seconds until the pollingTimeout times out.
| void setPollingInterval | ( | int | pollingInterval | ) |
Sets the polling interval in seconds.
| void setPollingRequestTimeout | ( | int | pollingRequestTimeout | ) |
Set the timeout for the single polling requests in seconsd.
| void setPollingTimeout | ( | int | pollingTimeout | ) |
Sets the polling timeout in seconds.
|
overrideprotectedvirtual |
Extracts the login url and the polling data from the initial authorisation request.
If the returned data is valid, gotLoginUrl() will be emitted an the polling for the application password start immediatly.
Implements Component.