[REM] Removed Login from webclient

bzr revid: fme@openerp.com-20140113173808-1clqlztx6fs79h2k
This commit is contained in:
Fabien Meghazi 2014-01-13 18:38:08 +01:00
parent 3f34405c7c
commit 75e02860c2
5 changed files with 18 additions and 495 deletions

View File

@ -1,4 +1,4 @@
@charset "utf-8";
@charset "UTF-8";
@font-face {
font-family: "mnmliconsRegular";
src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot");
@ -870,153 +870,6 @@
padding: 5px;
width: 32px;
}
.openerp .oe_login {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=);
text-align: center;
font-size: 14px;
height: 100%;
}
.openerp .oe_login ul, .openerp .oe_login li {
margin: 0;
list-style-type: none;
padding: 0 0 4px 0;
}
.openerp .oe_login button {
cursor: pointer;
padding: 6px 16px;
border: 1px solid #222222;
color: white;
margin: 0;
background-color: #8c1313;
background-image: -webkit-gradient(linear, left top, left bottom, from(#b92020), to(#600606));
background-image: -webkit-linear-gradient(top, #b92020, #600606);
background-image: -moz-linear-gradient(top, #b92020, #600606);
background-image: -ms-linear-gradient(top, #b92020, #600606);
background-image: -o-linear-gradient(top, #b92020, #600606);
background-image: linear-gradient(to bottom, #b92020, #600606);
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset;
}
.openerp .oe_login input, .openerp .oe_login select {
width: 252px;
font-family: "Lucida Grande", Helvetica, Verdana, Arial;
border: 1px solid #999999;
background: whitesmoke;
-moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4);
-webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4);
box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4);
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
}
.openerp .oe_login input {
margin-bottom: 9px;
padding: 5px 6px;
}
.openerp .oe_login select {
padding: 1px;
}
.openerp .oe_login .oe_login_dbpane {
position: fixed;
top: 0;
right: 8px;
padding: 5px 10px;
color: #eeeeee;
border: solid 1px #333333;
background: #1e1e1e;
background: rgba(30, 30, 30, 0.94);
-moz-border-radius: 0 0 8px 8px;
-webkit-border-radius: 0 0 8px 8px;
border-radius: 0 0 8px 8px;
}
.openerp .oe_login .oe_login_dbpane input {
padding: 2px 4px;
margin: 4px 0;
}
.openerp .oe_login .oe_login_bottom {
position: absolute;
top: 50%;
left: 0;
right: 0;
bottom: 0;
text-shadow: 0 1px 1px #999999;
background-color: #8a0e0e;
background-image: -webkit-gradient(linear, left top, left bottom, from(#b41616), to(#600606));
background-image: -webkit-linear-gradient(top, #b41616, #600606);
background-image: -moz-linear-gradient(top, #b41616, #600606);
background-image: -ms-linear-gradient(top, #b41616, #600606);
background-image: -o-linear-gradient(top, #b41616, #600606);
background-image: linear-gradient(to bottom, #b41616, #600606);
}
.openerp .oe_login .oe_login_pane {
position: absolute;
top: 50%;
left: 50%;
margin: -160px -166px;
border: solid 1px #333333;
background: #1e1e1e;
background: rgba(30, 30, 30, 0.94);
padding: 22px 32px;
color: #eeeeee;
text-align: left;
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
border-radius: 8px;
-moz-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9);
-webkit-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9);
box-shadow: 0 0 18px rgba(0, 0, 0, 0.9);
}
.openerp .oe_login .oe_login_pane h2 {
margin-top: 0;
font-size: 18px;
}
.openerp .oe_login .oe_login_logo {
position: absolute;
top: -70px;
left: 0;
width: 100%;
margin: 0 auto;
text-align: center;
}
.openerp .oe_login .oe_login_footer {
position: absolute;
bottom: -40px;
left: 0;
width: 100%;
text-align: center;
}
.openerp .oe_login .oe_login_footer a {
color: #eeeeee;
margin: 0 6px;
}
.openerp .oe_login .oe_login_footer a:hover {
text-decoration: underline;
}
.openerp .oe_login .oe_login_footer span {
font-weight: bold;
font-size: 16px;
}
.openerp .oe_login .oe_login_error_message {
display: none;
background-color: #b41616;
color: #eeeeee;
padding: 14px 18px;
margin-top: 15px;
text-align: center;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8);
-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8);
}
.openerp .oe_login_invalid .oe_login_error_message {
display: inline-block;
}
.openerp .oe_database_manager {
background: white;
color: black;

View File

@ -744,108 +744,6 @@ $sheet-padding: 16px
padding: 5px
width: 32px
// }}}
// Login {{{
.oe_login
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=)
text-align: center
font-size: 14px
height: 100%
ul, li
margin: 0
list-style-type: none
padding: 0 0 4px 0
button
cursor: pointer
padding: 6px 16px
border: 1px solid #222
color: white
margin: 0
@include vertical-gradient(#b92020, #600606)
@include radius(4px)
@include box-shadow((0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset))
input, select
width: 252px
font-family: "Lucida Grande", Helvetica, Verdana, Arial
border: 1px solid #999999
background: whitesmoke
@include box-shadow(inset 0 1px 4px rgba(0, 0, 0, 0.4))
@include radius(3px)
input
margin-bottom: 9px
padding: 5px 6px
select
padding: 1px
.oe_login_dbpane
position: fixed
top: 0
right: 8px
padding: 5px 10px
color: #eee
border: solid 1px #333
background: #1e1e1e
background: rgba(30,30,30,0.94)
@include radius(0 0 8px 8px)
input
padding: 2px 4px
margin: 4px 0
.oe_login_bottom
position: absolute
top: 50%
left: 0
right: 0
bottom: 0
text-shadow: 0 1px 1px #999999
@include vertical-gradient(#b41616, #600606)
.oe_login_pane
position: absolute
top: 50%
left: 50%
margin: -160px -166px
border: solid 1px #333333
background: #1e1e1e
background: rgba(30,30,30,0.94)
padding: 22px 32px
color: #eee
text-align: left
@include radius(8px)
@include box-shadow(0 0 18px rgba(0, 0, 0, 0.9))
h2
margin-top: 0
font-size: 18px
.oe_login_logo
position: absolute
top: -70px
left: 0
width: 100%
margin: 0 auto
text-align: center
.oe_login_footer
position: absolute
bottom: -40px
left: 0
width: 100%
text-align: center
a
color: #eee
margin: 0 6px
&:hover
text-decoration: underline
span
font-weight: bold
font-size: 16px
.oe_login_error_message
display: none
background-color: #b41616
color: #eee
padding: 14px 18px
margin-top: 15px
text-align: center
@include radius(4px)
@include box-shadow(0 1px 4px rgba(0, 0, 0, 0.8))
.oe_login_invalid
.oe_login_error_message
display: inline-block
// }}}
// DatabaseManager {{{
.oe_database_manager
background: #fff

View File

@ -475,19 +475,6 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
this.$el.find('#db-create, #db-drop, #db-backup, #db-restore, #db-change-password, #back-to-login').unbind('click').end().empty();
this._super();
},
/**
* Converts a .serializeArray() result into a dict. Does not bother folding
* multiple identical keys into an array, last key wins.
*
* @param {Array} array
*/
to_object: function (array) {
var result = {};
_(array).each(function (record) {
result[record.name] = record.value;
});
return result;
},
/**
* Blocks UI and replaces $.unblockUI by a noop to prevent third parties
* from unblocking the UI
@ -525,25 +512,11 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
var self = this;
var fields = $(form).serializeArray();
self.rpc("/web/database/create", {'fields': fields}).done(function(result) {
var form_obj = self.to_object(fields);
var client_action = {
type: 'ir.actions.client',
tag: 'login',
params: {
'db': form_obj['db_name'],
'login': 'admin',
'password': form_obj['create_admin_pwd'],
'login_successful': function() {
var url = '/web?db=' + form_obj['db_name'];
if (self.session.debug) {
url += '&debug';
}
instance.web.redirect(url);
},
},
_push_me: false,
};
self.do_action(client_action);
if (result) {
instance.web.redirect('/web')
} else {
alert("Failed to create database");
}
});
},
do_duplicate: function(form) {
@ -641,156 +614,20 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
},
do_exit: function () {
this.$el.remove();
instance.webclient.show_login();
instance.web.redirect('/web');
}
});
instance.web.client_actions.add("database_manager", "instance.web.DatabaseManager");
instance.web.Login = instance.web.Widget.extend({
template: "Login",
remember_credentials: true,
events: {
'change input[name=db],select[name=db]': function(ev) {
this.set('database_selector', $(ev.currentTarget).val());
},
},
instance.web.login = function() {
instance.web.redirect('/web/login');
};
instance.web.client_actions.add("login", "instance.web.login");
init: function(parent, action) {
this._super(parent);
this.has_local_storage = typeof(localStorage) != 'undefined';
this.db_list = null;
this.selected_db = instance.webclient.client_options.dbname || null;
this.selected_login = null;
this.params = action.params || {};
if (_.isEmpty(this.params)) {
this.params = $.bbq.getState(true);
}
if (action && action.params && action.params.db) {
this.params.db = action.params.db;
} else if ($.deparam.querystring().db) {
this.params.db = $.deparam.querystring().db;
}
if (this.params.db) {
this.selected_db = this.params.db;
}
if (this.params.login_successful) {
this.on('login_successful', this, this.params.login_successful);
}
// some cleanup to remove any trace of that last login feature
if (typeof(localStorage) != 'undefined') {
var toRemove = [];
_.each(_.range(localStorage.length), function(i) {
var key = localStorage.key(i);
if (key.match(/^.*?\|last_password$/)) {
toRemove.push(key);
}
});
_.each(toRemove, function(k) {
localStorage.removeItem(k);
});
}
},
start: function() {
var self = this;
self.$el.find("form").submit(self.on_submit);
self.$el.find('.oe_login_manage_db').click(function() {
self.do_action("database_manager");
});
self.on('change:database_selector', this, function() {
this.database_selected(this.get('database_selector'));
});
var d = $.when();
if ($.param.fragment().token) {
self.params.token = $.param.fragment().token;
}
// used by dbmanager.do_create via internal client action
if (self.params.db && self.params.login && self.params.password) {
d = self.do_login(self.params.db, self.params.login, self.params.password);
} else {
d = self.rpc("/web/database/get_list", {})
.done(self.on_db_loaded)
.fail(self.on_db_failed)
.always(function() {
if (self.selected_db && self.has_local_storage && self.remember_credentials) {
self.$("[name=login]").val(localStorage.getItem(self.selected_db + '|last_login') || '');
}
});
}
return d;
},
database_selected: function(db) {
var params = $.deparam.querystring();
params.db = db;
this.$('.oe_login_dbpane').empty().text(_t('Loading...'));
this.$('[name=login], [name=password]').prop('readonly', true);
instance.web.redirect('/web?' + $.param(params));
},
on_db_loaded: function (result) {
var self = this;
this.db_list = result;
if (!this.selected_db) {
this.selected_db = result[0];
}
this.$("[name=db]").replaceWith(QWeb.render('Login.dblist', { db_list: this.db_list, selected_db: this.selected_db}));
if(this.db_list.length === 0) {
this.do_action("database_manager");
} else if(this.db_list.length === 1) {
this.$('div.oe_login_dbpane').hide();
} else {
this.$('div.oe_login_dbpane').show();
}
},
on_db_failed: function (error, event) {
if (error.data.name === 'openerp.exceptions.AccessDenied') {
event.preventDefault();
}
},
on_submit: function(ev) {
if(ev) {
ev.preventDefault();
}
var db = this.$("form [name=db]").val();
if (!db) {
this.do_warn(_t("Login"), _t("No database selected !"));
return false;
}
var login = this.$("form input[name=login]").val();
var password = this.$("form input[name=password]").val();
this.do_login(db, login, password);
},
/**
* Performs actual login operation, and UI-related stuff
*
* @param {String} db database to log in
* @param {String} login user login
* @param {String} password user password
*/
do_login: function (db, login, password) {
var self = this;
self.hide_error();
self.$(".oe_login_pane").fadeOut("slow");
return this.session.session_authenticate(db, login, password).then(function() {
if (self.has_local_storage && self.remember_credentials) {
localStorage.setItem(db + '|last_login', login);
}
self.trigger('login_successful');
}, function () {
self.$(".oe_login_pane").fadeIn("fast", function() {
self.show_error(_t("Invalid username or password"));
});
});
},
show_error: function(message) {
this.$el.addClass("oe_login_invalid");
this.$(".oe_login_error_message").text(message);
},
hide_error: function() {
this.$el.removeClass('oe_login_invalid');
},
});
instance.web.client_actions.add("login", "instance.web.Login");
instance.web.logout = function() {
instance.web.redirect('/web/session/logout');
};
instance.web.client_actions.add("logout", "instance.web.logout");
/**
@ -1335,9 +1172,7 @@ instance.web.WebClient = instance.web.Client.extend({
if (jQuery.deparam !== undefined && jQuery.deparam(jQuery.param.querystring()).kitten !== undefined) {
self.to_kitten();
}
if (!self.session.session_is_valid()) {
self.show_login();
} else {
if (self.session.session_is_valid()) {
self.show_application();
}
if (self.client_options.action) {
@ -1393,25 +1228,6 @@ instance.web.WebClient = instance.web.Client.extend({
});
};
},
show_login: function() {
this.toggle_bars(false);
var state = $.bbq.getState(true);
var action = {
type: 'ir.actions.client',
tag: 'login',
_push_me: false,
};
this.action_manager.do_action(action);
this.action_manager.inner_widget.on('login_successful', this, function() {
if ('redirect' in state) {
openerp.web.redirect(state.redirect);
} else {
this.show_application(); // will load the state we just pushed
}
});
},
show_application: function() {
var self = this;
self.toggle_bars(true);
@ -1510,11 +1326,7 @@ instance.web.WebClient = instance.web.Client.extend({
on_logout: function() {
var self = this;
if (!this.has_uncommitted_changes()) {
this.session.session_logout().done(function () {
$(window).unbind('hashchange', self.on_hashchange);
self.do_push_state({});
window.location.reload();
});
self.action_manager.do_action('logout');
}
},
bind_hashchange: function() {

View File

@ -252,7 +252,7 @@ instance.web.Session.include( /** @lends instance.web.Session# */{
return !!this.uid;
},
/**
* The session is validated either by login or by restoration of a previous session
* The session is validated by restoration of a previous session
*/
session_authenticate: function() {
var self = this;

View File

@ -58,46 +58,6 @@
</div>
</t>
<t t-name="Login">
<div class="oe_login">
<div class="oe_login_bottom"> </div>
<div class="oe_login_error_message"/>
<div class="oe_login_pane">
<div class="oe_login_logo"><img src='/web/static/src/img/logo2.png'/></div>
<form action="" method="post">
<div class="oe_login_dbpane" >
Database:
<input name="db" t-att-value="widget.selected_db || ''"/>
</div>
<ul>
<li>Username</li>
<li><input name="login" type="text" value="" autofocus="autofocus"/></li>
<li>Password</li>
<li><input name="password" type="password" value=""/></li>
<li><button name="submit">Log in</button></li>
</ul>
</form>
<div class="oe_login_footer">
<a href="#" class="oe_login_manage_db">Manage Databases</a> |
<a href="http://www.openerp.com" target="_blank">Powered by <span>OpenERP</span></a>
</div>
</div>
</div>
</t>
<t t-name="Login.dblist">
<select name="db">
<t t-foreach="db_list" t-as="db">
<t t-if="selected_db === db">
<option t-att-value="db" selected="true">
<t t-esc="db"/></option>
</t>
<t t-if="selected_db !== db">
<option t-att-value="db"><t t-esc="db"/></option>
</t>
</t>
</select>
</t>
<t t-name="DatabaseManager">
<div class="oe_view_manager_view_form">
<div class="oe_form">