mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Add MigrateScreen widget
This widget is intended to integrate password migrate page into the entire IPA Web framework. The functionality is the same as mentioned standalone "ipa/migration/index.html". Fixes: https://pagure.io/freeipa/issue/7641 Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> Reviewed-By: Petr Vobornik <pvoborni@redhat.com> Reviewed-By: Serhii Tsymbaliuk <stsymbal@localhost.localdomain>
This commit is contained in:
parent
02f4a7a2d6
commit
79cb8ffb0a
@ -48,6 +48,11 @@ define([
|
||||
*/
|
||||
i18n_messages_url: '/ipa/i18n_messages',
|
||||
|
||||
/**
|
||||
* password migration url
|
||||
*/
|
||||
migration_url: '/ipa/migration/migration.py',
|
||||
|
||||
/**
|
||||
* RPC url
|
||||
*/
|
||||
|
199
install/ui/src/freeipa/widgets/MigrateScreen.js
Normal file
199
install/ui/src/freeipa/widgets/MigrateScreen.js
Normal file
@ -0,0 +1,199 @@
|
||||
//
|
||||
// Copyright (C) 2018 FreeIPA Contributors see COPYING for license
|
||||
//
|
||||
|
||||
define(['dojo/_base/declare',
|
||||
'dojo/dom-construct',
|
||||
'dojo/topic',
|
||||
'../ipa',
|
||||
'../config',
|
||||
'../text',
|
||||
'../util',
|
||||
'./LoginScreenBase'
|
||||
],
|
||||
function(declare, construct, topic, IPA, config, text, util,
|
||||
LoginScreenBase) {
|
||||
|
||||
/**
|
||||
* Widget with password migration form.
|
||||
*
|
||||
* Supported operations:
|
||||
*
|
||||
* - password migration
|
||||
*
|
||||
* @class widgets.MigrateScreen
|
||||
*/
|
||||
var MigrateScreen = declare([LoginScreenBase], {
|
||||
|
||||
migration_error_msg: "There was a problem with your request."+
|
||||
"Please, try again later.",
|
||||
|
||||
migration_failure_msg: "Password migration was not successful",
|
||||
|
||||
migration_info_msg: "<h1>Password Migration</h1><p>"+
|
||||
"If you have been sent here by your administrator, your personal "+
|
||||
"information is being migrated to a new identity management "+
|
||||
"solution (IPA).</p><p>Please, enter your credentials in the form"+
|
||||
" to complete the process. Upon successful login your kerberos "+
|
||||
"account will be activated.</p>",
|
||||
|
||||
migration_invalid_password: "The password or username you entered"+
|
||||
" is incorrect",
|
||||
|
||||
migration_success: "Password migration was successful",
|
||||
|
||||
//nodes:
|
||||
migrate_btn_node: null,
|
||||
|
||||
render_buttons: function(container) {
|
||||
this.migrate_btn_node = IPA.button({
|
||||
label: text.get('@i18n:buttons.migrate', "Migrate"),
|
||||
'class': 'btn-primary btn-lg',
|
||||
click: this.on_confirm.bind(this)
|
||||
})[0];
|
||||
construct.place(this.migrate_btn_node, container);
|
||||
},
|
||||
|
||||
on_confirm: function() {
|
||||
this.migrate();
|
||||
},
|
||||
|
||||
migrate: function() {
|
||||
var val_summary = this.get_widget('validation');
|
||||
val_summary.remove('migrate');
|
||||
|
||||
if (!this.validate()) return;
|
||||
|
||||
var username = this.get_field('username');
|
||||
var psw = this.get_field('password');
|
||||
var result = this.migrate_core(
|
||||
username.get_value()[0],
|
||||
psw.get_value()[0]);
|
||||
|
||||
psw.set_value('');
|
||||
if (result.status === 'ok') {
|
||||
val_summary.add_success('migrate', this.migration_success);
|
||||
window.setTimeout(this.redirect, 3000);
|
||||
} else {
|
||||
val_summary.add_error('migrate', result.message);
|
||||
}
|
||||
},
|
||||
|
||||
redirect: function() {
|
||||
window.location = config.url;
|
||||
},
|
||||
|
||||
migrate_core: function(username, password) {
|
||||
|
||||
//possible results: 'ok', 'invalid-password', 'migration-error'
|
||||
|
||||
var status = 'invalid';
|
||||
var result = {
|
||||
status: status,
|
||||
message: this.migration_failure_msg
|
||||
};
|
||||
|
||||
function success_handler(data, text_status, xhr) {
|
||||
topic.publish('rpc-end');
|
||||
result.status = xhr.getResponseHeader(
|
||||
"X-IPA-Migrate-Result") || status;
|
||||
|
||||
if (result.status === 'migration-error') {
|
||||
result.message = this.migration_error_msg;
|
||||
} else if (result.status === 'invalid-password') {
|
||||
result.message = this.migration_invalid_password;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function error_handler(xhr, text_status, error_thrown) {
|
||||
topic.publish('rpc-end');
|
||||
return result;
|
||||
}
|
||||
|
||||
var data = {
|
||||
username: username,
|
||||
password: password
|
||||
};
|
||||
|
||||
var request = {
|
||||
url: config.migration_url,
|
||||
data: data,
|
||||
contentType: 'application/x-www-form-urlencoded',
|
||||
processData: true,
|
||||
dataType: 'html',
|
||||
async: false,
|
||||
type: 'POST',
|
||||
success: success_handler.bind(this),
|
||||
error: error_handler.bind(this)
|
||||
};
|
||||
|
||||
topic.publish('rpc-start');
|
||||
$.ajax(request);
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
refresh: function() {
|
||||
this.set('aside', this.migration_info_msg);
|
||||
var val_summary = this.get_widget('validation');
|
||||
|
||||
var u_f = this.fields.get('username');
|
||||
this.get_widget('username').focus_input();
|
||||
},
|
||||
|
||||
constructor: function(spec) {
|
||||
spec = spec || {};
|
||||
|
||||
this.migration_error_msg = text.get(
|
||||
spec.migration_error_msg ||
|
||||
'@i18n:migration.migration_error_msg',
|
||||
this.migration_error_msg);
|
||||
|
||||
this.migration_failure_msg = text.get(
|
||||
spec.migration_failure_msg ||
|
||||
'@i18n:migration.migration_failure_msg',
|
||||
this.migration_failure_msg);
|
||||
|
||||
this.migration_info_msg = text.get(
|
||||
spec.migration_info_msg ||
|
||||
'@i18n:migration.migration_info_msg',
|
||||
this.migration_info_msg);
|
||||
|
||||
this.migration_invalid_password = text.get(
|
||||
spec.migration_invalid_password ||
|
||||
'@i18n:migration.migration_invalid_password',
|
||||
this.migration_invalid_password);
|
||||
|
||||
this.migration_success = text.get(
|
||||
spec.migration_success ||
|
||||
'@i18n:migration.migration_success',
|
||||
this.migration_success);
|
||||
|
||||
this.field_specs = MigrateScreen.field_specs;
|
||||
}
|
||||
});
|
||||
|
||||
MigrateScreen.field_specs = [
|
||||
{
|
||||
$type: 'text',
|
||||
name: 'username',
|
||||
label: text.get('@i18n:login.username', "Username"),
|
||||
placeholder: text.get('@i18n:login.username', "Username"),
|
||||
required: true,
|
||||
show_errors: false,
|
||||
undo: false
|
||||
},
|
||||
{
|
||||
$type: 'password',
|
||||
name: 'password',
|
||||
label: text.get('@i18n:login.password', "Password"),
|
||||
placeholder: text.get('@i18n:login.password', 'Password'),
|
||||
required: true,
|
||||
show_errors: false,
|
||||
undo: false
|
||||
}
|
||||
];
|
||||
|
||||
return MigrateScreen;
|
||||
});
|
Loading…
Reference in New Issue
Block a user