Addresses: NB#293240 - Signon web browser should respond more quickly to loading...
[accounts-sso:signon.git] / lib / plugins / SignOn / uisessiondata.h
1 /*
2  * This file is part of signon
3  *
4  * Copyright (C) 2009-2010 Nokia Corporation.
5  *
6  * Contact: Alberto Mardegan <alberto.mardegan@nokia.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * version 2.1 as published by the Free Software Foundation.
11  *
12  * This library is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20  * 02110-1301 USA
21  */
22 /*!
23  * @copyright Copyright (C) 2009-2011 Nokia Corporation.
24  * @license LGPL
25  */
26
27 #ifndef UISESSIONDATA_H
28 #define UISESSIONDATA_H
29
30 #include <SignOn/SessionData>
31 /*!
32  * Error codes for ui interaction.
33  */
34
35 namespace SignOn {
36
37 enum QueryError {
38     QUERY_ERROR_NONE = 0,        /**< No errors. */
39     QUERY_ERROR_GENERAL,         /**< Generic error during interaction. */
40     QUERY_ERROR_NO_SIGNONUI,     /**< Cannot send request to signon-ui. */
41     QUERY_ERROR_BAD_PARAMETERS,  /**< Signon-Ui cannot create dialog based on the given UiSessionData. */
42     QUERY_ERROR_CANCELED,        /**< User canceled action. Plugin should not retry automatically after this. */
43     QUERY_ERROR_NOT_AVAILABLE,   /**< Requested ui is not available. For example browser cannot be started. */
44     QUERY_ERROR_BAD_URL,         /**< Given url was not valid. */
45     QUERY_ERROR_BAD_CAPTCHA,     /**< Given captcha image was not valid. */
46     QUERY_ERROR_BAD_CAPTCHA_URL, /**< Given url for capctha loading was not valid. */
47     QUERY_ERROR_REFRESH_FAILED,  /**< Refresh failed. */
48     QUERY_ERROR_FORBIDDEN,       /**< Showing ui forbidden by ui policy. */
49     QUERY_ERROR_FORGOT_PASSWORD, /**< User pressed forgot password. */
50     QUERY_ERROR_SESSION_CLOSED   /**< User closed the session before completing session related operations. */
51     //TODO add more errors
52 };
53
54 /*!
55  * Predefined messages to be shown to user while querying input.
56  */
57 enum QueryMessageId {
58     QUERY_MESSAGE_EMPTY = 0,          /**< No predefined message. */
59     QUERY_MESSAGE_LOGIN,     /**< Login without prior errors. */
60     QUERY_MESSAGE_NOT_AUTHORIZED          /**< Authentication failed. */
61     //TODO add more messages
62 };
63
64 /*!
65  * @class UiSessionData
66  * Data container to hold values for authentication session.
67  * Inherit this class if you want to extend the property range.
68  *
69  * @warning All this class' definitions must be inline.
70  */
71 class UiSessionData : public SessionData
72 {
73 public:
74     /*!
75      * Constructor. Creates a UiSessionData with data 'data'.
76      * @param data The data to be contained by the UiSessionData
77      * @attention internal use only recommended. As a SSO client application developer
78      *            use setters/gettters for specific SessionData properties.
79      */
80     UiSessionData(const QVariantMap &data = QVariantMap()) { m_data = data; }
81
82     /*!
83      * Declares the property QueryError setter and getter.
84      * QueryError is used to report errors in ui interaction
85      * that is shown to user.
86      * @see QueryError
87      */
88     SIGNON_SESSION_DECLARE_PROPERTY(int, QueryErrorCode)
89
90     /*!
91      * Declare the property Caption setter and getter.
92      * Caption is used to set credentials caption.
93      * Empty caption is discarded.
94      * @warning This string is shown to user as it is,
95      * plugin is responsible for localization.
96      */
97     SIGNON_SESSION_DECLARE_PROPERTY(QString, Caption)
98
99     /*!
100      * Declare the property Title setter and getter.
101      * Title is used to set dialog title for password confirmation.
102      * @warning This string is shown to user as it is.
103      */
104     SIGNON_SESSION_DECLARE_PROPERTY(QString, Title)
105
106     /*!
107      * Declares the property QueryMessageId setter and getter.
108      * QueryMessageId is used to select predefined localized message
109      * that is shown to user.
110      * @see QueryMessageId
111      */
112     SIGNON_SESSION_DECLARE_PROPERTY(int, QueryMessageId)
113
114     /*!
115      * Declares the property QueryMessage setter and getter.
116      * QueryMessage is used to show given message to user.
117      * Empty message is discarded.
118      * @warning This string is shown to user as it is,
119      * plugin is responsible for localization.
120      */
121     SIGNON_SESSION_DECLARE_PROPERTY(QString, QueryMessage)
122
123     /*!
124      * Declares the property QueryUserName setter and getter.
125      * QueryUserName is used to enable username input in signon-ui.
126      */
127     SIGNON_SESSION_DECLARE_PROPERTY(bool, QueryUserName)
128
129     /*!
130      * Declares the property QueryPassword setter and getter.
131      * QueryPassword is used to enable password input in signon-ui.
132      */
133     SIGNON_SESSION_DECLARE_PROPERTY(bool, QueryPassword)
134
135     /*!
136      * Declares the property RememberPassword setter and getter.
137      * RememberPassword is used to enable password storing signond.
138      */
139     SIGNON_SESSION_DECLARE_PROPERTY(bool, RememberPassword)
140
141     /*!
142      * Declares the property ShowRealm setter and getter.
143      * ShowRealm is used to show realm in signon-ui.
144      */
145     SIGNON_SESSION_DECLARE_PROPERTY(bool, ShowRealm)
146
147     /*!
148      * Declares the property OpenUrl setter and getter.
149      * This url is passed to signon-ui to be opened and shown to user.
150      * Empty url does not open the url view.
151      */
152     SIGNON_SESSION_DECLARE_PROPERTY(QString, OpenUrl)
153
154     /*!
155      * Declares the property FinalUrl setter and getter.
156      * If this URL is set, the signon-ui browser widget will close
157      * automatically when this URL is reached.
158      */
159     SIGNON_SESSION_DECLARE_PROPERTY(QString, FinalUrl)
160
161     /*!
162      * Declares the property DisplayFinalUrl setter and getter.
163      * This property instructs the Signon UI browser whether to
164      * load and display the FinalUrl or not. If it is set to
165      * `false`, when reached, the final URL will be replied immediately
166      * to the authentication plugin, while stopping it from further loading
167      * and at the same time closing the web browser.
168      * The default behavior is to fully load and display the FinalUrl
169      * web page, then reply it as such to the requesting authentication
170      * plugin.
171      */
172     SIGNON_SESSION_DECLARE_PROPERTY(bool, DisplayFinalUrl)
173
174     /*!
175      * Declares the property UrlResponse setter and getter.
176      * Response from signon-ui for OpenUrl request.
177      * After completion UrlResponse contains redirect target url, if there was redirection.
178      */
179     SIGNON_SESSION_DECLARE_PROPERTY(QString, UrlResponse)
180
181     /*!
182      * Declares the property CaptchaUrl setter and getter.
183      * CaptchaUrl contains url to the captcha image to be verified by user.
184      * CaptchaUrl is used in signon-ui when plugin requires the captcha verification from user.
185      * If this is empty, captcha query is not shown, unless CaptchaImage contain valid image.
186      */
187     SIGNON_SESSION_DECLARE_PROPERTY(QString, CaptchaUrl)
188
189     /*!
190      * Declares the property CaptchaImage setter and getter.
191      * CaptchaImage contains the captcha image to be verified by user.
192      * CaptchaImage is passed to signon-ui when plugin requires the captcha verification from user.
193      * If this is empty, captcha query is not shown, unless CaptchaUrl point to valid image.
194      */
195     SIGNON_SESSION_DECLARE_PROPERTY(QByteArray, CaptchaImage)
196
197     /*!
198      * Declares the property CaptchaResponse setter and getter
199      * CaptchaResponse is passed to plugin after signon-ui has processed the captcha query.
200      * It contains user input for captcha query.
201      * @see CaptchaUrl
202      * @see CaptchaImage.
203      */
204     SIGNON_SESSION_DECLARE_PROPERTY(QString, CaptchaResponse)
205
206     /*!
207      * Declares the property ForgotPassword setter and getter
208      * ForgotPassword string is shown as a link to user.
209      * @see ForgotPasswordUrl
210      */
211     SIGNON_SESSION_DECLARE_PROPERTY(QString, ForgotPassword)
212
213     /*!
214      * Declares the property ForgotPasswordUrl setter and getter
215      * ForgotPasswordUrl is shown to user if ForgotPassword link is pressed.
216      * @see ForgotPassword
217      */
218     SIGNON_SESSION_DECLARE_PROPERTY(QString, ForgotPasswordUrl)
219
220     /*!
221      * Declares the property Confirm setter and getter
222      * This will set dialog to confirm password mode.
223      * @see ForgotPasswordUrl
224      */
225     SIGNON_SESSION_DECLARE_PROPERTY(bool, Confirm)
226
227     /*!
228      * Declares the property Icon setter and getter
229      * Icon is shown to user in signin dialog.
230      * @see ForgotPassword
231      */
232     SIGNON_SESSION_DECLARE_PROPERTY(QString, Icon)
233
234 };
235
236 } //namespace SignOn
237
238 Q_DECLARE_METATYPE(SignOn::UiSessionData)
239 #endif // UISESSIONDATA_H