Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5_fork
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Eteri
erp5_fork
Commits
159b0817
Commit
159b0817
authored
Nov 18, 2020
by
Vincent Pelletier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_web_renderjs_ui: Add minimal oauth2 token support.
This should evolve to become a browser-side OAuth2 client.
parent
035d099a
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
381 additions
and
169 deletions
+381
-169
bt5/erp5_configurator_standard/TestTemplateItem/portal_components/test.erp5.testOfficeJSSDKConfigurator.py
...ortal_components/test.erp5.testOfficeJSSDKConfigurator.py
+1
-0
bt5/erp5_officejs_support_request_ui_test/PathTemplateItem/portal_tests/officejs_support_request_ui_zuite/zzz_logout_test/testLogin.zpt
...js_support_request_ui_zuite/zzz_logout_test/testLogin.zpt
+13
-18
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSection_viewRenderJSPreference.xml
...s/erp5_web_renderjs/WebSection_viewRenderJSPreference.xml
+1
-0
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSection_viewRenderJSPreference/my_configuration_oauth2_client_connector_id.xml
...reference/my_configuration_oauth2_client_connector_id.xml
+96
-0
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/Base_redirect.py
...teItem/portal_skins/erp5_web_renderjs_ui/Base_redirect.py
+18
-0
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/Base_redirect.xml
...eItem/portal_skins/erp5_web_renderjs_ui/Base_redirect.xml
+62
-0
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/login_form.py
...plateItem/portal_skins/erp5_web_renderjs_ui/login_form.py
+23
-0
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/login_form.xml
...lateItem/portal_skins/erp5_web_renderjs_ui/login_form.xml
+19
-15
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/login_once_form.xml
...tem/portal_skins/erp5_web_renderjs_ui/login_once_form.xml
+58
-0
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/login_once_form.zpt
...tem/portal_skins/erp5_web_renderjs_ui/login_once_form.zpt
+37
-29
bt5/erp5_web_renderjs_ui/bt/dependency_list
bt5/erp5_web_renderjs_ui/bt/dependency_list
+2
-1
bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_disable_xhtml_zuite/testDisableXHtmlStyle.zpt
...renderjs_ui_disable_xhtml_zuite/testDisableXHtmlStyle.zpt
+18
-56
bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_logout_zuite/testRenderjsLogout.zpt
...tal_tests/renderjs_ui_logout_zuite/testRenderjsLogout.zpt
+18
-30
bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_recover_password_zuite/testRenderjsRecoverPassword.zpt
...ui_recover_password_zuite/testRenderjsRecoverPassword.zpt
+15
-20
No files found.
bt5/erp5_configurator_standard/TestTemplateItem/portal_components/test.erp5.testOfficeJSSDKConfigurator.py
View file @
159b0817
...
@@ -218,6 +218,7 @@ class TestOfficeJSSDKConfigurator(SecurityTestCase):
...
@@ -218,6 +218,7 @@ class TestOfficeJSSDKConfigurator(SecurityTestCase):
'erp5_monaco_editor'
,
'erp5_monaco_editor'
,
'erp5_multimedia'
,
'erp5_multimedia'
,
'erp5_notebook'
,
'erp5_notebook'
,
'erp5_oauth2_resource'
,
'erp5_officejs'
,
'erp5_officejs'
,
'erp5_officejs_connector'
,
'erp5_officejs_connector'
,
'erp5_officejs_jquery_app'
,
'erp5_officejs_jquery_app'
,
...
...
bt5/erp5_officejs_support_request_ui_test/PathTemplateItem/portal_tests/officejs_support_request_ui_zuite/zzz_logout_test/testLogin.zpt
View file @
159b0817
...
@@ -62,12 +62,12 @@
...
@@ -62,12 +62,12 @@
<!-- Then access the homepage to make sure the login form still can appear -->
<!-- Then access the homepage to make sure the login form still can appear -->
<tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
waitForElementPresent
</td>
<td>
//input[@
name="WebSite_login:method
"]
</td>
<td>
//input[@
value="Login
"]
</td>
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tr>
<td>
assertElementPresent
</td>
<td>
assertElementPresent
</td>
<td>
//input[@
name="WebSite_login:method
"]
</td>
<td>
//input[@
value="Login
"]
</td>
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tr>
...
@@ -77,24 +77,19 @@
...
@@ -77,24 +77,19 @@
</tr>
</tr>
<tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
waitForElementPresent
</td>
<td>
//input[@
name="WebSite_login:method
"]
</td>
<td>
//input[@
value="Login
"]
</td>
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tal:block
tal:define=
"
<td>
type
</td>
login_form_url python: None;
<td>
//input[@name='__ac_name']
</td>
wait python: False;
<td>
user_logout_test
</td>
submit_name python: '//input[@value=\'Login\']';
</tr>
"
>
<tr>
<tal:block
metal:use-macro=
"python: context.Zuite_CommonTemplate.macros['login']"
>
<td>
type
</td>
<tal:block
metal:fill-slot=
"username"
>
user_logout_test
</tal:block>
<td>
//input[@name='__ac_password']
</td>
<tal:block
metal:fill-slot=
"password"
>
user_logout_test
</tal:block>
<td>
user_logout_test
</td>
</tal:block>
</tr>
</tal:block>
<tr>
<td>
click
</td>
<td>
WebSite_login:method
</td>
<td></td>
</tr>
<tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
waitForElementPresent
</td>
<td>
//div[contains(@data-gadget-url, 'gadget_erp5_header.html')]//h1
</td>
<td>
//div[contains(@data-gadget-url, 'gadget_erp5_header.html')]//h1
</td>
...
...
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSection_viewRenderJSPreference.xml
View file @
159b0817
...
@@ -91,6 +91,7 @@
...
@@ -91,6 +91,7 @@
<string>
my_configuration_stylesheet_url
</string>
<string>
my_configuration_stylesheet_url
</string>
<string>
my_configuration_wallpaper_url
</string>
<string>
my_configuration_wallpaper_url
</string>
<string>
my_configuration_icon_url
</string>
<string>
my_configuration_icon_url
</string>
<string>
my_configuration_oauth2_client_connector_id
</string>
</list>
</list>
</value>
</value>
</item>
</item>
...
...
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSection_viewRenderJSPreference/my_configuration_oauth2_client_connector_id.xml
0 → 100644
View file @
159b0817
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_configuration_oauth2_client_connector_id
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_view_mode_reference
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
OAuth2 Client Connector Id
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/Base_redirect.py
0 → 100644
View file @
159b0817
# XXX: minimal copy of xhtml_style's implementation, used by OAuth2 authentication.
# This should be removed once erp5js implements outh2 protocol directly instead of going through login forms
from
ZTUtils
import
make_query
# BBB: originally, form_id was the first positional argument
if
not
redirect_url
or
'/'
not
in
redirect_url
:
form_id
=
redirect_url
or
form_id
redirect_url
=
context
.
absolute_url
()
if
form_id
:
if
not
redirect_url
.
endswith
(
'/'
):
redirect_url
+=
'/'
redirect_url
+=
form_id
if
keep_items
:
redirect_url
+=
'?'
+
make_query
(
keep_items
)
context
.
getPortalObject
().
REQUEST
.
RESPONSE
.
redirect
(
redirect_url
,
status
=
status_code
,
)
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/Base_redirect.xml
0 → 100644
View file @
159b0817
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
redirect_url=None, keep_items=(), status_code=302, form_id=None
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Base_redirect
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/login_form.py
0 → 100644
View file @
159b0817
# Short-circuit old (pre-oauth2) web-mode "login_form"s
import
urllib
web_section_value
=
context
.
getWebSectionValue
()
client_id
=
context
.
getPortalObject
().
ERP5Site_getOAuth2ClientConnectorClientId
(
connector_id
=
(
None
if
web_section_value
is
None
else
web_section_value
.
getLayoutProperty
(
'configuration_oauth2_client_connector_id'
,
default
=
None
)
),
)
if
client_id
is
None
:
# BBB: OAuth2 is not enabled
return
context
.
login_once_form
(
has_oauth2
=
False
)
if
came_from
:
# Make the user go through WebSite_login after authentication, so it does its url de-templatification magic
came_from
=
context
.
absolute_url
()
+
'/WebSite_login?'
+
urllib
.
urlencode
(((
'came_from'
,
came_from
),
))
return
context
.
skinSuper
(
'erp5_web_renderjs_ui'
,
script
.
id
)(
REQUEST
=
REQUEST
,
RESPONSE
=
RESPONSE
,
client_id
=
client_id
,
came_from
=
came_from
,
portal_status_message
=
portal_status_message
,
)
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/login_form.xml
View file @
159b0817
...
@@ -2,10 +2,14 @@
...
@@ -2,10 +2,14 @@
<ZopeData>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<pickle>
<global
name=
"
ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate
"
/>
<global
name=
"
PythonScript"
module=
"Products.PythonScripts.PythonScript
"
/>
</pickle>
</pickle>
<pickle>
<pickle>
<dictionary>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<key>
<string>
_bind_names
</string>
</key>
<value>
<value>
...
@@ -20,6 +24,18 @@
...
@@ -20,6 +24,18 @@
<key>
<string>
_asgns
</string>
</key>
<key>
<string>
_asgns
</string>
</key>
<value>
<value>
<dictionary>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
<value>
<string>
traverse_subpath
</string>
</value>
...
@@ -33,25 +49,13 @@
...
@@ -33,25 +49,13 @@
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
content_type
</string>
</key>
<key>
<string>
_params
</string>
</key>
<value>
<string>
text/html
</string>
</value>
<value>
<string>
REQUEST, RESPONSE, came_from=None, portal_status_message=None
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
<value>
<string>
login_form
</string>
</value>
<value>
<string>
login_form
</string>
</value>
</item>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
...
...
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/login_once_form.xml
0 → 100644
View file @
159b0817
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
login_once_form
</string>
</value>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/login_form.zpt
→
bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/login_
once_
form.zpt
View file @
159b0817
<html
tal:define=
"form_action string:WebSite_login;
<html
tal:define=
"
absolute_url context/absolute_url;
ERP5Site python: modules['Products.ERP5.ERP5Site'];
portal context/getPortalObject;
has_oauth2 python: options.get('has_oauth2', True);
form_action python: 'logged_in_once' if has_oauth2 else 'WebSite_login';
absolute_url python: context.absolute_url() + '/';
web_site_value python: context.getWebSiteValue();
portal python: context.getPortalObject();
root_absolute_url python: (portal if web_site_value is None else web_site_value).absolute_url() + '/';
available_oauth_login_list python: portal.ERP5Site_getAvailableOAuthLoginList();
available_oauth_login_list python: portal.ERP5Site_getAvailableOAuthLoginList();
enable_google_login python: 'google' in available_oauth_login_list;
enable_google_login python: 'google' in available_oauth_login_list;
enable_facebook_login python: 'facebook' in available_oauth_login_list;
enable_facebook_login python: 'facebook' in available_oauth_login_list;
...
@@ -9,7 +14,7 @@
...
@@ -9,7 +14,7 @@
<head>
<head>
<meta
charset=
"UTF-8"
>
<meta
charset=
"UTF-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<title
tal:content=
"p
ortal/getTitle
"
></title>
<title
tal:content=
"p
ython: portal.getTitle()
"
></title>
<link
rel=
"stylesheet"
href=
"gadget_erp5_nojqm.css"
>
<link
rel=
"stylesheet"
href=
"gadget_erp5_nojqm.css"
>
</head>
</head>
...
@@ -32,42 +37,47 @@
...
@@ -32,42 +37,47 @@
<div
class=
"gadget-content"
>
<div
class=
"gadget-content"
>
<article>
<article>
<section>
<section>
<div
class=
"visible"
data-gadget-scope=
"notification"
tal:condition=
"
exists: request/portal_status_message
"
>
<div
class=
"visible"
data-gadget-scope=
"notification"
tal:condition=
"
python: 'portal_status_message' in request
"
>
<button
type=
"submit"
class=
"error"
tal:attributes=
"data-i18n
request/portal_status_message"
><span
tal:content=
"request/portal_status_message
"
></span></button>
<button
type=
"submit"
class=
"error"
tal:attributes=
"data-i18n
python: request['portal_status_message']"
><span
tal:content=
"python: request['portal_status_message']
"
></span></button>
</div>
</div>
</section>
</section>
<section
tal:condition=
"not: portal/portal_membership/isAnonymousUser"
>
<section>
<p
i18n:domain=
"ui"
i18n:translate=
""
>
It seems you're already authenticated.
</p>
<p><a
tal:condition=
"exists: request/came_from"
tal:attributes=
"href python:context.WebSection_renderCameFromURITemplate(request.came_from)"
>
Go back
</a></p>
</section>
<section
tal:condition=
"portal/portal_membership/isAnonymousUser"
>
<section
class=
"ui-content-header-plain"
>
<section
class=
"ui-content-header-plain"
>
<h3
class=
"ui-content-title ui-body-c"
>
<h3
class=
"ui-content-title ui-body-c"
>
<span
class=
"ui-icon ui-icon-custom ui-icon-sign-in"
></span>
<span
class=
"ui-icon ui-icon-custom ui-icon-sign-in"
></span>
<tal:block
i18n:domain=
"ui"
i18n:translate=
""
>
Log in
</tal:block>
<tal:block
i18n:domain=
"ui"
i18n:translate=
""
>
Log in
</tal:block>
</h3>
</h3>
</section>
</section>
<form
method=
"post"
tal:attributes=
"action python: '%s/' % absolute_url"
class=
"field_container"
>
<form
method=
"post"
tal:attributes=
"action python: absolute_url"
class=
"field_container"
>
<tal:block
tal:condition=
"python: has_oauth2"
>
<input
type=
"hidden"
tal:attributes=
"
name python: ERP5Site.ERP5_AUTHORISATION_EXTRACTOR_MARKER_NAME;
value python: ERP5Site.ERP5_AUTHORISATION_EXTRACTOR_MARKER_VALUE;
"
/>
<input
type=
"hidden"
name=
"login_retry_url"
tal:attributes=
"value python: request.get('login_retry_url', '')"
/>
</tal:block>
<div>
<div>
<div>
<div>
<div
class=
"ui-field-contain"
>
<div
class=
"ui-field-contain"
>
<label
i18n:domain=
"ui"
i18n:translate=
""
>
Username
</label>
<label
i18n:domain=
"ui"
i18n:translate=
""
>
Username
</label>
<div><input
autofocus
type=
"text"
name=
"__ac_name"
value=
""
required=
"
"
></div>
<div><input
autofocus
type=
"text"
value=
""
required=
""
tal:attributes=
"name python: ERP5Site.ERP5_AUTHORISATION_EXTRACTOR_USERNAME_NAME if has_oauth2 else '__ac_name'
"
></div>
</div>
</div>
<div
class=
"ui-field-contain"
>
<div
class=
"ui-field-contain"
>
<label
i18n:domain=
"ui"
i18n:translate=
""
>
Password
</label>
<label
i18n:domain=
"ui"
i18n:translate=
""
>
Password
</label>
<div><input
type=
"password"
name=
"__ac_password"
value=
""
autocomplete=
"off"
/></div>
<div><input
type=
"password"
value=
""
autocomplete=
"off"
tal:attributes=
"name python: ERP5Site.ERP5_AUTHORISATION_EXTRACTOR_PASSWORD_NAME if has_oauth2 else '__ac_password'"
/></div>
</div>
</div>
<div
class=
"dialog_button_container"
>
<div
class=
"dialog_button_container"
>
<input
type=
"submit"
value=
"Login"
i18n:attributes=
"value"
i18n:domain=
"ui"
tal:attributes=
"name python: '%s:method' % (form_action, )"
/>
<input
type=
"submit"
value=
"Login"
i18n:attributes=
"value"
i18n:domain=
"ui"
tal:attributes=
"name python: '%s:method' % (form_action, )"
/>
<a
i18n:domain=
"ui"
i18n:translate=
""
tal:attributes=
"href python: '%s
/WebSite_viewRecoverAccount?came_from=%s' % (absolute_url, absolute_url
)"
>
I forgot my password!
</a>
<a
i18n:domain=
"ui"
i18n:translate=
""
tal:attributes=
"href python: '%s
WebSite_viewRecoverAccount?%s' % (absolute_url, modules['urllib'].urlencode([('came_from', absolute_url)])
)"
>
I forgot my password!
</a>
</div>
</div>
<div
class=
"dialog_button_container"
tal:condition=
"enable_google_login"
<div
class=
"dialog_button_container"
tal:condition=
"enable_google_login"
>
tal:define=
"current_url python: context.getWebSiteValue().absolute_url()"
>
<a
tal:attributes=
"href python: root_absolute_url + 'ERP5Site_redirectToGoogleLoginPage'"
<a
tal:attributes=
"href string:${current_url}/ERP5Site_redirectToGoogleLoginPage"
i18n:translate=
""
i18n:translate=
""
i18n:domain=
"ui"
i18n:domain=
"ui"
class=
"sign_in_with_google"
class=
"sign_in_with_google"
...
@@ -76,9 +86,8 @@
...
@@ -76,9 +86,8 @@
</a>
</a>
</div>
</div>
<div
class=
"dialog_button_container"
tal:condition=
"enable_facebook_login"
<div
class=
"dialog_button_container"
tal:condition=
"enable_facebook_login"
>
tal:define=
"current_url python: context.getWebSiteValue().absolute_url()"
>
<a
tal:attributes=
"href python: root_absolute_url + 'ERP5Site_redirectToFacebookLoginPage'"
<a
tal:attributes=
"href string:${current_url}/ERP5Site_redirectToFacebookLoginPage"
i18n:translate=
""
i18n:translate=
""
i18n:domain=
"ui"
i18n:domain=
"ui"
class=
"sign_in_with_facebook"
class=
"sign_in_with_facebook"
...
@@ -87,9 +96,8 @@
...
@@ -87,9 +96,8 @@
<img
alt=
"Login with Facebook"
src=
"facebook_login_button.png"
>
<img
alt=
"Login with Facebook"
src=
"facebook_login_button.png"
>
</a>
</a>
</div>
</div>
<div
class=
"dialog_button_container"
tal:condition=
"enable_openidconnect_login"
<div
class=
"dialog_button_container"
tal:condition=
"enable_openidconnect_login"
>
tal:define=
"current_url python: context.getWebSiteValue().absolute_url()"
>
<a
tal:attributes=
"href python: root_absolute_url + 'ERP5Site_redirectToOpenIdLoginPage'"
<a
tal:attributes=
"href string:${current_url}/ERP5Site_redirectToOpenIdLoginPage"
i18n:translate=
""
i18n:translate=
""
i18n:domain=
"ui"
i18n:domain=
"ui"
class=
"sign_in_with_openid"
class=
"sign_in_with_openid"
...
@@ -103,13 +111,13 @@
...
@@ -103,13 +111,13 @@
</div>
</div>
<input
type=
"hidden"
name=
"url"
tal:attributes=
"value absolute_url"
/>
<input
type=
"hidden"
name=
"url"
tal:attributes=
"value absolute_url"
/>
<input
tal:condition=
"
exists: request/came_from
"
<input
tal:condition=
"
python: 'came_from' in request
"
type=
"hidden"
name=
"came_from"
type=
"hidden"
name=
"came_from"
tal:attributes=
"value
request/came_from
"
/>
tal:attributes=
"value
python: request['came_from']
"
/>
</form>
</form>
</section>
</section>
</article>
</article>
</div>
</div>
</div>
</div>
</body>
</body>
</html>
</html>
\ No newline at end of file
bt5/erp5_web_renderjs_ui/bt/dependency_list
View file @
159b0817
erp5_hal_json_style
erp5_hal_json_style
erp5_dms
erp5_dms
erp5_font
erp5_font
\ No newline at end of file
erp5_oauth2_resource
\ No newline at end of file
bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_disable_xhtml_zuite/testDisableXHtmlStyle.zpt
View file @
159b0817
...
@@ -99,34 +99,15 @@
...
@@ -99,34 +99,15 @@
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tal:block
tal:define=
"
<td>
openAndWait
</td>
login_form_url python: '${base_url}';
<td>
${base_url}
</td>
submit_name python: '//input[@value=\'Login\']';
<td></td>
"
>
</tr>
<tal:block
metal:use-macro=
"python: context.Zuite_CommonTemplate.macros['login']"
>
<tal:block
metal:fill-slot=
"username"
>
user_logout_test
</tal:block>
<tr>
<tal:block
metal:fill-slot=
"password"
>
user_logout_test
</tal:block>
<td>
waitForElementPresent
</td>
</tal:block>
<td>
//input[@name='__ac_name']
</td>
</tal:block>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='__ac_name']
</td>
<td>
user_logout_test
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='__ac_password']
</td>
<td>
user_logout_test
</td>
</tr>
<tr>
<td>
clickAndWait
</td>
<td>
//input[@value='Login']
</td>
<td></td>
</tr>
<tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
waitForTextPresent
</td>
...
@@ -198,34 +179,15 @@
...
@@ -198,34 +179,15 @@
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tal:block
tal:define=
"
<td>
openAndWait
</td>
login_form_url python: '${base_url}';
<td>
${base_url}
</td>
submit_name python: '//input[@value=\'Login\']';
<td></td>
"
>
</tr>
<tal:block
metal:use-macro=
"python: context.Zuite_CommonTemplate.macros['login']"
>
<tal:block
metal:fill-slot=
"username"
>
user_logout_test
</tal:block>
<tr>
<tal:block
metal:fill-slot=
"password"
>
user_logout_test
</tal:block>
<td>
waitForElementPresent
</td>
</tal:block>
<td>
//input[@name='__ac_name']
</td>
</tal:block>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='__ac_name']
</td>
<td>
user_logout_test
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='__ac_password']
</td>
<td>
user_logout_test
</td>
</tr>
<tr>
<td>
clickAndWait
</td>
<td>
//input[@value='Login']
</td>
<td></td>
</tr>
<tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
waitForTextPresent
</td>
...
...
bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_logout_zuite/testRenderjsLogout.zpt
View file @
159b0817
...
@@ -83,21 +83,16 @@
...
@@ -83,21 +83,16 @@
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tal:block
tal:define=
"
<td>
type
</td>
login_form_url python: None;
<td>
//input[@name='__ac_name']
</td>
wait python: False;
<td>
user_logout_test
</td>
submit_name python: '//input[@value=\'Login\']';
</tr>
"
>
<tr>
<tal:block
metal:use-macro=
"python: context.Zuite_CommonTemplate.macros['login']"
>
<td>
type
</td>
<tal:block
metal:fill-slot=
"username"
>
user_logout_test
</tal:block>
<td>
//input[@name='__ac_password']
</td>
<tal:block
metal:fill-slot=
"password"
>
user_logout_test
</tal:block>
<td>
user_logout_test
</td>
</tal:block>
</tr>
</tal:block>
<tr>
<td>
click
</td>
<td>
//input[@value='Login']
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded"
/>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded"
/>
...
@@ -181,21 +176,14 @@
...
@@ -181,21 +176,14 @@
</tr>
</tr>
<tr>
<tal:block
tal:define=
"
<td>
type
</td>
login_form_url python: None;
<td>
//input[@name='__ac_name']
</td>
wait python: False;
<td>
user_logout_test
</td>
submit_name python: '//input[@value=\'Login\']';
</tr>
"
><tal:block
metal:use-macro=
"python: context.Zuite_CommonTemplate.macros['login']"
>
<tr>
<tal:block
metal:fill-slot=
"username"
>
user_logout_test
</tal:block>
<td>
type
</td>
<tal:block
metal:fill-slot=
"password"
>
user_logout_test
</tal:block>
<td>
//input[@name='__ac_password']
</td>
</tal:block></tal:block>
<td>
user_logout_test
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//input[@value='Login']
</td>
<td></td>
</tr>
<tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
waitForElementPresent
</td>
...
...
bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_recover_password_zuite/testRenderjsRecoverPassword.zpt
View file @
159b0817
...
@@ -185,13 +185,13 @@
...
@@ -185,13 +185,13 @@
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tr>
<td>
waitFor
Elemen
tPresent
</td>
<td>
waitFor
Tex
tPresent
</td>
<td>
//input[@name='__ac_name']
</td>
<td>
Username
</td>
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tr>
<td>
waitForElemen
tPresent
</td>
<td>
assertTex
tPresent
</td>
<td>
//input[@name='__ac_password']
</td>
<td>
Password
</td>
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tr>
...
@@ -199,25 +199,20 @@
...
@@ -199,25 +199,20 @@
<td>
Password changed.
</td>
<td>
Password changed.
</td>
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tal:block
tal:define=
"
<td>
type
</td>
login_form_url python: None;
<td>
//input[@name='__ac_name']
</td>
wait python: False;
<td>
user_a_test
</td>
submit_name python: '//input[@value=\'Login\']';
</tr>
"
>
<tr>
<tal:block
metal:use-macro=
"python: context.Zuite_CommonTemplate.macros['login']"
>
<td>
type
</td>
<tal:block
metal:fill-slot=
"username"
>
user_a_test
</tal:block>
<td>
//input[@name='__ac_password']
</td>
<tal:block
metal:fill-slot=
"password"
>
123
</tal:block>
<td>
123
</td>
</tal:block>
</tr>
</tal:block>
<tr>
<td>
click
</td>
<td>
//input[@value='Login']
</td>
<td></td>
</tr>
<!--User can access even has no access to it's person document -->
<!--User can access even has no access to it's person document -->
<tr>
<tr>
<td>
waitForElementNotPresent
</td>
<td>
waitForElementNotPresent
</td>
<td>
//input[@
name='__ac_name
']
</td>
<td>
//input[@
value='Login
']
</td>
<td></td>
<td></td>
</tr>
</tr>
<tr>
<tr>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment