aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/login.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csapi/login.h')
-rw-r--r--lib/csapi/login.h61
1 files changed, 58 insertions, 3 deletions
diff --git a/lib/csapi/login.h b/lib/csapi/login.h
index 6e462aeb..31d4dc64 100644
--- a/lib/csapi/login.h
+++ b/lib/csapi/login.h
@@ -13,13 +13,21 @@ namespace QMatrixClient
{
// Operations
+ /// Get the supported login types to authenticate users
+ ///
+ /// Gets the homeserver's supported login types to authenticate users. Clients
+ /// should pick one of these and supply it as the ``type`` when logging in.
class GetLoginFlowsJob : public BaseJob
{
public:
// Inner data structures
+ /// Gets the homeserver's supported login types to authenticate users. Clients
+ /// should pick one of these and supply it as the ``type`` when logging in.
struct LoginFlow
{
+ /// The login type. This is supplied as the ``type`` when
+ /// logging in.
QString type;
};
@@ -27,9 +35,10 @@ namespace QMatrixClient
explicit GetLoginFlowsJob();
- /** Construct a URL out of baseUrl and usual parameters passed to
- * GetLoginFlowsJob. This function can be used when
- * a URL for GetLoginFlowsJob is necessary but the job
+ /*! Construct a URL without creating a full-fledged job object
+ *
+ * This function can be used when a URL for
+ * GetLoginFlowsJob is necessary but the job
* itself isn't.
*/
static QUrl makeRequestUrl(QUrl baseUrl);
@@ -38,6 +47,7 @@ namespace QMatrixClient
// Result properties
+ /// The homeserver's supported login types
const QVector<LoginFlow>& flows() const;
protected:
@@ -48,17 +58,62 @@ namespace QMatrixClient
QScopedPointer<Private> d;
};
+ /// Authenticates the user.
+ ///
+ /// Authenticates the user, and issues an access token they can
+ /// use to authorize themself in subsequent requests.
+ ///
+ /// If the client does not supply a ``device_id``, the server must
+ /// auto-generate one.
+ ///
+ /// The returned access token must be associated with the ``device_id``
+ /// supplied by the client or generated by the server. The server may
+ /// invalidate any access token previously associated with that device. See
+ /// `Relationship between access tokens and devices`_.
class LoginJob : public BaseJob
{
public:
+ /*! Authenticates the user.
+ * \param type
+ * The login type being used.
+ * \param user
+ * The fully qualified user ID or just local part of the user ID, to log in.
+ * \param medium
+ * When logging in using a third party identifier, the medium of the identifier. Must be 'email'.
+ * \param address
+ * Third party identifier for the user.
+ * \param password
+ * Required when ``type`` is ``m.login.password``. The user's
+ * password.
+ * \param token
+ * Required when ``type`` is ``m.login.token``. Part of `Token-based`_ login.
+ * \param deviceId
+ * ID of the client device. If this does not correspond to a
+ * known client device, a new device will be created. The server
+ * will auto-generate a device_id if this is not specified.
+ * \param initialDeviceDisplayName
+ * A display name to assign to the newly-created device. Ignored
+ * if ``device_id`` corresponds to a known device.
+ */
explicit LoginJob(const QString& type, const QString& user = {}, const QString& medium = {}, const QString& address = {}, const QString& password = {}, const QString& token = {}, const QString& deviceId = {}, const QString& initialDeviceDisplayName = {});
~LoginJob() override;
// Result properties
+ /// The fully-qualified Matrix ID that has been registered.
const QString& userId() const;
+ /// An access token for the account.
+ /// This access token can then be used to authorize other requests.
const QString& accessToken() const;
+ /// The server_name of the homeserver on which the account has
+ /// been registered.
+ ///
+ /// **Deprecated**. Clients should extract the server_name from
+ /// ``user_id`` (by splitting at the first colon) if they require
+ /// it. Note also that ``homeserver`` is not spelt this way.
const QString& homeServer() const;
+ /// ID of the logged-in device. Will be the same as the
+ /// corresponding parameter in the request, if one was specified.
const QString& deviceId() const;
protected: