576 lines
28 KiB
HTML
576 lines
28 KiB
HTML
<html>
|
|
<head>
|
|
<style type="text/css">
|
|
body {font-family: sans-serif}
|
|
table {border-collapse: collapse}
|
|
td {padding-left: 1ex; padding-right: 1ex}
|
|
.account {color: #0000ff; padding-left: 3ex; cursor: pointer}
|
|
.add_account_heading {text-align: right; padding-right: 0}
|
|
.service {padding-left: 3ex; vertical-align: top}
|
|
.service_detail {padding-left: 0}
|
|
.user {color: #0000ff; padding-left: 3ex; cursor: pointer}
|
|
.group {padding-left: 3ex}
|
|
.add_user_heading {text-align: right; padding-right: 0}
|
|
.shadow_delement {color: #0000ff; cursor: pointer}
|
|
.shadow_felement {display: none}
|
|
#swauth {font-size: 200%; font-weight: bold; font-style: italic; margin: 0px; padding: 0px}
|
|
#creds_area {float: right}
|
|
#logout {color: #0000ff; padding-left: 3ex; cursor: pointer}
|
|
#refresh_accounts {color: #0000ff; padding-left: 1ex; cursor: pointer}
|
|
#add_account {color: #0000ff; padding-left: 1ex; padding-right: 1ex; cursor: pointer}
|
|
#add_account_title {padding-top: 1ex; padding-bottom: 1ex}
|
|
#add_account_cancel {color: #0000ff; padding-top: 1ex; padding-left: 3ex; cursor: pointer}
|
|
#add_account_save {color: #0000ff; text-align: right; padding-top: 1ex; padding-right: 3ex; cursor: pointer}
|
|
#account_area {background: #ddeeff}
|
|
#add_user {color: #0000ff; padding-left: 1ex; padding-right: 1ex; cursor: pointer}
|
|
#add_user_title {padding-top: 1ex; padding-bottom: 1ex}
|
|
#add_user_cancel {color: #0000ff; padding-top: 1ex; padding-left: 3ex; cursor: pointer}
|
|
#add_user_save {color: #0000ff; text-align: right; padding-top: 1ex; padding-right: 3ex; cursor: pointer}
|
|
#delete_account {color: #0000ff; text-align: right; margin-left: 45ex; padding-right: 1ex; cursor: pointer}
|
|
#user_area {background: #aaccff}
|
|
#delete_user {color: #0000ff; text-align: right; margin-left: 45ex; padding-right: 1ex; cursor: pointer}
|
|
#auth_view {display: none}
|
|
#auth_toggler {color: #0000ff; cursor: pointer}
|
|
#auth_update {color: #0000ff; padding-left: 1ex; cursor: pointer}
|
|
#auth_update_field {display: none}
|
|
</style>
|
|
<script type="text/javascript">
|
|
var request = null;
|
|
var creds_user = '';
|
|
var creds_key = '';
|
|
var creds_logged_in = true;
|
|
var account = '';
|
|
var user = '';
|
|
var account_selection = -1;
|
|
var user_selection = -1;
|
|
var swauth_area_selected_background = '#ddeeff';
|
|
var account_area_selected_background = '#aaccff';
|
|
var endpoints;
|
|
|
|
function msg_http_error(request) {
|
|
return 'Server returned status:\n' +
|
|
request.status + ' ' + request.statusText +
|
|
'\n\nDetail:\n' +
|
|
request.responseText;
|
|
}
|
|
|
|
function get_bounds(element) {
|
|
bounds = {};
|
|
bounds.top = 0;
|
|
bounds.left = 0;
|
|
bounds.width = element.offsetWidth;
|
|
bounds.height = element.offsetHeight;
|
|
if (element.offsetParent) {
|
|
do {
|
|
bounds.top += element.offsetTop;
|
|
bounds.left += element.offsetLeft;
|
|
} while (element = element.offsetParent);
|
|
}
|
|
return bounds;
|
|
}
|
|
|
|
function shadow_edit(delement) {
|
|
felement = document.getElementById('f' + delement.id.substring(1));
|
|
felement.value = delement.innerHTML;
|
|
delement.style.display = 'none';
|
|
felement.style.display = 'inline';
|
|
felement.focus();
|
|
}
|
|
|
|
function shadow_submitter(felement, evnt, func) {
|
|
keycode = 0;
|
|
if (window.event) {
|
|
keycode = window.event.keyCode;
|
|
} else if (evnt) {
|
|
keycode = evnt.which;
|
|
}
|
|
if (keycode == 13) {
|
|
func(felement);
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function shadow_escaper(felement, evnt) {
|
|
keycode = 0;
|
|
if (window.event) {
|
|
keycode = window.event.keyCode;
|
|
} else if (evnt) {
|
|
keycode = evnt.which;
|
|
}
|
|
if (keycode == 27) {
|
|
felement.style.display = 'none';
|
|
document.getElementById('d' + felement.id.substring(1)).style.display = 'inline';
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function creds_clicked() {
|
|
creds_area = document.getElementById('creds_area');
|
|
if (creds_logged_in) {
|
|
creds_area.innerHTML = 'User: <input id="creds_user" type="text" size="10" /> Key: <input id="creds_key" type="password" size="10" onkeypress="return creds_submitter(event)" /> <input type="button" onclick="return creds_clicked();" value="Login" />';
|
|
document.getElementById('creds_user').value = creds_user;
|
|
swauth_area_reset();
|
|
|
|
creds_logged_in = false;
|
|
creds_user = '';
|
|
creds_key = '';
|
|
document.getElementById("creds_user").focus();
|
|
} else {
|
|
creds_user = document.getElementById('creds_user').value;
|
|
creds_key = document.getElementById('creds_key').value;
|
|
if (!creds_user) {
|
|
alert('Please fill user');
|
|
return;
|
|
}
|
|
if (!creds_key) {
|
|
alert('Please fill key');
|
|
return;
|
|
}
|
|
creds_area.innerHTML = '<div>Logged in as ' + creds_user + ' <span id="logout" onclick="creds_clicked()">Logout</span></div>';
|
|
creds_logged_in = true;
|
|
swauth_area_load();
|
|
}
|
|
}
|
|
|
|
function creds_submitter(e) {
|
|
keycode = 0;
|
|
if (window.event) {
|
|
keycode = window.event.keyCode;
|
|
} else if (e) {
|
|
keycode = e.which;
|
|
}
|
|
if (keycode == 13) {
|
|
creds_clicked();
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function swauth_area_reset() {
|
|
account_area_reset();
|
|
document.getElementById('swauth_area').innerHTML = '';
|
|
}
|
|
|
|
function account_area_reset() {
|
|
user_area_reset();
|
|
element = document.getElementById('add_account')
|
|
if (element) {
|
|
element.style.background = 'none';
|
|
}
|
|
if (account_selection != -1) {
|
|
document.getElementById('account_' + account_selection).style.background = 'none';
|
|
}
|
|
account = '';
|
|
account_selection = -1;
|
|
document.getElementById('account_area').innerHTML = '';
|
|
}
|
|
|
|
function user_area_reset() {
|
|
element = document.getElementById('add_user')
|
|
if (element) {
|
|
element.style.background = 'none';
|
|
}
|
|
if (user_selection != -1) {
|
|
document.getElementById('user_' + user_selection).style.background = 'none';
|
|
}
|
|
user = '';
|
|
user_selection = -1;
|
|
document.getElementById('user_area').innerHTML = '';
|
|
}
|
|
|
|
function swauth_area_load() {
|
|
swauth_area_reset();
|
|
request = new XMLHttpRequest();
|
|
request.onreadystatechange = swauth_area_load2;
|
|
request.open('GET', './v2/', true);
|
|
request.setRequestHeader('X-Auth-Admin-User', creds_user);
|
|
request.setRequestHeader('X-Auth-Admin-Key', creds_key);
|
|
request.send();
|
|
}
|
|
|
|
function swauth_area_load2() {
|
|
if (request.readyState == 4) {
|
|
swauth_area = document.getElementById('swauth_area');
|
|
if (request.status >= 200 && request.status <= 299) {
|
|
data = JSON.parse(request.responseText);
|
|
content = '<table><tr><td>Accounts <span id="refresh_accounts" onclick="swauth_area_load()">Refresh</span> <span id="add_account" onclick="add_account()">Add</span></td></tr>';
|
|
for (ix = 0; ix < data.accounts.length; ix++) {
|
|
content += '<tr><td id="account_' + ix + '" onclick="account_area_load(' + ix + ')" class="account">' + data.accounts[ix].name + '</td></tr>';
|
|
}
|
|
content += '</table>';
|
|
swauth_area.innerHTML = content;
|
|
} else {
|
|
swauth_area.innerHTML = msg_http_error(request);
|
|
}
|
|
}
|
|
}
|
|
|
|
function add_account() {
|
|
account_area_reset();
|
|
document.getElementById('add_account').style.background = swauth_area_selected_background;
|
|
account_area = document.getElementById('account_area');
|
|
account_area.innerHTML = '<table><tr><td id="add_account_title" colspan="2">New Account</td></tr><tr><td class="add_account_heading">Name</td><td><input id="add_account_name" type="text" size="20" /></td></tr><tr><td class="add_account_heading">Suffix</td><td><input id="add_account_suffix" type="text" size="20" /> (Optional)</td></tr><tr><td id="add_account_cancel" onclick="swauth_area_load()">Cancel</td><td id="add_account_save" onclick="add_account_save()">Add</td></tr></table>';
|
|
bounds = get_bounds(document.getElementById('add_account'));
|
|
account_area.style.position = 'absolute';
|
|
account_area.style.top = bounds.top;
|
|
account_area.style.left = bounds.left + bounds.width;
|
|
document.getElementById("add_account_name").focus();
|
|
}
|
|
|
|
function add_account_save() {
|
|
request = new XMLHttpRequest();
|
|
request.onreadystatechange = add_account_save2;
|
|
request.open('PUT', './v2/' + document.getElementById('add_account_name').value, true);
|
|
request.setRequestHeader('X-Auth-Admin-User', creds_user);
|
|
request.setRequestHeader('X-Auth-Admin-Key', creds_key);
|
|
request.setRequestHeader('X-Account-Suffix', document.getElementById('add_account_suffix').value);
|
|
request.send();
|
|
}
|
|
|
|
function add_account_save2() {
|
|
if (request.readyState == 4) {
|
|
if (request.status >= 200 && request.status <= 299) {
|
|
swauth_area_load();
|
|
} else {
|
|
alert(msg_http_error(request));
|
|
}
|
|
}
|
|
}
|
|
|
|
function account_area_load(account_index) {
|
|
account_area_reset();
|
|
account_element = document.getElementById('account_' + account_index);
|
|
account_element.style.background = swauth_area_selected_background;
|
|
account_selection = account_index;
|
|
account = account_element.innerHTML;
|
|
request = new XMLHttpRequest();
|
|
request.onreadystatechange = account_area_load2;
|
|
request.open('GET', './v2/' + account, true);
|
|
request.setRequestHeader('X-Auth-Admin-User', creds_user);
|
|
request.setRequestHeader('X-Auth-Admin-Key', creds_key);
|
|
request.send();
|
|
}
|
|
|
|
function account_area_load2() {
|
|
account_area = document.getElementById('account_area');
|
|
if (request.readyState == 4) {
|
|
if (request.status >= 200 && request.status <= 299) {
|
|
data = JSON.parse(request.responseText);
|
|
content = '<div id="delete_account" onclick="delete_account()">Delete</div><table><tr><td>Account Id</td><td>' + data.account_id + '</td></tr></table><table><tr><td>Services</td></tr>';
|
|
services = [];
|
|
for (service in data.services) {
|
|
services.push(service);
|
|
}
|
|
services.sort();
|
|
for (ix = 0; ix < services.length; ix++) {
|
|
content += '<tr><td class="service">' + services[ix] + '</td><td class="service_detail"><table>';
|
|
if (data.services[services[ix]]['default']) {
|
|
content += '<tr><td>default</td><td><span id="d-' + services[ix] + '" class="shadow_delement" onclick="shadow_edit(this)">' + data.services[services[ix]]['default'] + '</span><input id="f-' + services[ix] + '" class="shadow_felement" type="text" size="40" onkeypress="return shadow_submitter(this, event, endpoint_save)" onkeydown="return shadow_escaper(this, event)" /></td></tr>';
|
|
}
|
|
endpoints = [];
|
|
for (name in data.services[services[ix]]) {
|
|
if (name != 'default') {
|
|
endpoints.push(name);
|
|
}
|
|
}
|
|
endpoints.sort();
|
|
for (iy = 0; iy < endpoints.length; iy++) {
|
|
content += '<tr><td>' + endpoints[iy] + '</td><td><span id="d' + iy + '-' + services[ix] + '" class="shadow_delement" onclick="shadow_edit(this)">' + data.services[services[ix]][endpoints[iy]] + '</span><input id="f' + iy + '-' + services[ix] + '" class="shadow_felement" type="text" size="40" onkeypress="return shadow_submitter(this, event, endpoint_save)" onkeydown="return shadow_escaper(this, event)" /></td></tr>';
|
|
}
|
|
content += '</table></td></tr>';
|
|
}
|
|
content += '</table><table><tr><td>Users <span id="add_user" onclick="add_user()">Add</span></td></tr>';
|
|
for (ix = 0; ix < data.users.length; ix++) {
|
|
content += '<tr><td id="user_' + ix + '" onclick="user_area_load(' + ix + ')" class="user">' + data.users[ix].name + '</td></tr>';
|
|
}
|
|
content += '</table>';
|
|
account_area.innerHTML = content;
|
|
} else {
|
|
account_area.innerHTML = msg_http_error(request);
|
|
}
|
|
bounds = get_bounds(document.getElementById('account_' + account_selection));
|
|
account_area.style.position = 'absolute';
|
|
account_area.style.top = bounds.top;
|
|
account_area.style.left = bounds.left + bounds.width;
|
|
}
|
|
}
|
|
|
|
function endpoint_save(field) {
|
|
service = field.id.substring(field.id.indexOf('-') + 1)
|
|
index = field.id.substring(1, field.id.indexOf('-'))
|
|
if (index) {
|
|
endpoint = endpoints[index];
|
|
} else {
|
|
endpoint = 'default';
|
|
}
|
|
services = {};
|
|
services[service] = {};
|
|
services[service][endpoint] = field.value;
|
|
request = new XMLHttpRequest();
|
|
request.onreadystatechange = endpoint_save2;
|
|
request.open('POST', './v2/' + account + '/.services', true);
|
|
request.setRequestHeader('X-Auth-Admin-User', creds_user);
|
|
request.setRequestHeader('X-Auth-Admin-Key', creds_key);
|
|
request.send(JSON.stringify(services));
|
|
}
|
|
|
|
function endpoint_save2() {
|
|
if (request.readyState == 4) {
|
|
if (request.status >= 200 && request.status <= 299) {
|
|
account_area_load(account_selection);
|
|
} else {
|
|
alert(msg_http_error(request));
|
|
}
|
|
}
|
|
}
|
|
|
|
function add_user() {
|
|
user_area_reset();
|
|
document.getElementById('add_user').style.background = account_area_selected_background;
|
|
user_area = document.getElementById('user_area');
|
|
user_area.innerHTML = '<table><tr><td id="add_user_title" colspan="2">New User</td></tr><tr><td class="add_user_heading">Name</td><td><input id="add_user_name" type="text" size="20" /></td></tr><tr><td class="add_user_heading">Auth Key</td><td><input id="add_user_key" type="password" size="20" /></td></tr><tr><td class="add_user_heading">Account Admin</td><td><input id="add_user_admin" type="checkbox" /></td></tr><tr><td class="add_user_heading">Reseller Admin</td><td><input id="add_user_reseller_admin" type="checkbox" /></td></tr><tr><td id="add_user_cancel" onclick="add_user_cancel()">Cancel</td><td id="add_user_save" onclick="add_user_save()">Add</td></tr></table>';
|
|
bounds = get_bounds(document.getElementById('add_user'));
|
|
user_area.style.position = 'absolute';
|
|
user_area.style.top = bounds.top;
|
|
user_area.style.left = bounds.left + bounds.width;
|
|
document.getElementById("add_user_name").focus();
|
|
}
|
|
|
|
function add_user_cancel() {
|
|
document.getElementById('add_user').style.background = 'none';
|
|
document.getElementById('user_area').innerHTML = '';
|
|
}
|
|
|
|
function add_user_save() {
|
|
request = new XMLHttpRequest();
|
|
request.onreadystatechange = add_user_save2;
|
|
request.open('PUT', './v2/' + account + '/' + document.getElementById('add_user_name').value, true);
|
|
request.setRequestHeader('X-Auth-Admin-User', creds_user);
|
|
request.setRequestHeader('X-Auth-Admin-Key', creds_key);
|
|
request.setRequestHeader('X-Auth-User-Key', document.getElementById('add_user_key').value);
|
|
if (document.getElementById('add_user_admin').checked) {
|
|
request.setRequestHeader('X-Auth-User-Admin', 'true');
|
|
}
|
|
if (document.getElementById('add_user_reseller_admin').checked) {
|
|
request.setRequestHeader('X-Auth-User-Reseller-Admin', 'true');
|
|
}
|
|
request.send();
|
|
}
|
|
|
|
function add_user_save2() {
|
|
if (request.readyState == 4) {
|
|
if (request.status >= 200 && request.status <= 299) {
|
|
account_area_load(account_selection);
|
|
} else {
|
|
alert(msg_http_error(request));
|
|
}
|
|
}
|
|
}
|
|
|
|
function delete_account() {
|
|
var user = document.getElementById('user_0');
|
|
if (user) {
|
|
alert('Remove all users first');
|
|
return;
|
|
}
|
|
|
|
request = new XMLHttpRequest();
|
|
request.onreadystatechange = delete_account2;
|
|
request.open('DELETE', './v2/' + account, true);
|
|
request.setRequestHeader('X-Auth-Admin-User', creds_user);
|
|
request.setRequestHeader('X-Auth-Admin-Key', creds_key);
|
|
request.send();
|
|
}
|
|
|
|
function delete_account2() {
|
|
if (request.readyState == 4) {
|
|
if (request.status >= 200 && request.status <= 299) {
|
|
swauth_area_load();
|
|
} else {
|
|
alert(msg_http_error(request));
|
|
}
|
|
}
|
|
}
|
|
|
|
function user_area_load(account_area_user_index) {
|
|
user_area_reset();
|
|
user_element = document.getElementById('user_' + account_area_user_index);
|
|
user_element.style.background = account_area_selected_background;
|
|
user_selection = account_area_user_index;
|
|
user = user_element.innerHTML;
|
|
request = new XMLHttpRequest();
|
|
request.onreadystatechange = user_area_load2;
|
|
request.open('GET', './v2/' + account + '/' + user, true);
|
|
request.setRequestHeader('X-Auth-Admin-User', creds_user);
|
|
request.setRequestHeader('X-Auth-Admin-Key', creds_key);
|
|
request.send();
|
|
}
|
|
|
|
function user_area_load2() {
|
|
user_area = document.getElementById('user_area');
|
|
if (request.readyState == 4) {
|
|
if (request.status >= 200 && request.status <= 299) {
|
|
data = JSON.parse(request.responseText);
|
|
content = '<div id="delete_user" onclick="delete_user()">Delete</div><table><tr><td>Auth</td><td><span id="auth_toggler" onclick="auth_toggle()">Show</span> <span id="auth_view">' + data.auth + '</span></td><td><input id="auth_update_field" type="password" size="20" onkeypress="return auth_submitter(event)" onkeydown="return auth_escaper(event)" /> <span id="auth_update" onclick="auth_update()">Update</span></td></tr></table><table><tr><td>Groups</td></tr>';
|
|
groups = [];
|
|
for (ix = 0; ix < data.groups.length; ix++) {
|
|
groups.push(data.groups[ix].name);
|
|
}
|
|
groups.sort();
|
|
for (ix = 0; ix < groups.length; ix++) {
|
|
content += '<tr><td class="group">' + groups[ix] + '</td></tr>';
|
|
}
|
|
content += '</table>';
|
|
user_area.innerHTML = content;
|
|
} else {
|
|
user_area.innerHTML = msg_http_error(request);
|
|
}
|
|
bounds = get_bounds(document.getElementById('user_' + user_selection));
|
|
user_area.style.position = 'absolute';
|
|
user_area.style.top = bounds.top;
|
|
user_area.style.left = bounds.left + bounds.width;
|
|
}
|
|
}
|
|
|
|
function delete_user() {
|
|
request = new XMLHttpRequest();
|
|
request.onreadystatechange = delete_user2;
|
|
request.open('DELETE', './v2/' + account + '/' + user, true);
|
|
request.setRequestHeader('X-Auth-Admin-User', creds_user);
|
|
request.setRequestHeader('X-Auth-Admin-Key', creds_key);
|
|
request.send();
|
|
}
|
|
|
|
function delete_user2() {
|
|
if (request.readyState == 4) {
|
|
if (request.status >= 200 && request.status <= 299) {
|
|
account_area_load(account_selection);
|
|
} else {
|
|
alert(msg_http_error(request));
|
|
}
|
|
}
|
|
}
|
|
|
|
function auth_toggle() {
|
|
to_toggle = document.getElementById('auth_view');
|
|
toggler = document.getElementById('auth_toggler');
|
|
if (to_toggle.style.display && to_toggle.style.display != 'none') {
|
|
toggler.innerHTML = 'Show';
|
|
to_toggle.style.display = 'none';
|
|
} else {
|
|
toggler.innerHTML = 'Hide';
|
|
to_toggle.style.display = 'inline';
|
|
}
|
|
}
|
|
|
|
function auth_update() {
|
|
field = document.getElementById('auth_update_field');
|
|
trigger = document.getElementById('auth_update');
|
|
if (field.style.display && field.style.display != 'none') {
|
|
auth_save();
|
|
} else {
|
|
field.style.display = 'inline';
|
|
trigger.style.display = 'none';
|
|
field.focus();
|
|
}
|
|
}
|
|
|
|
function auth_submitter(e) {
|
|
keycode = 0;
|
|
if (window.event) {
|
|
keycode = window.event.keyCode;
|
|
} else if (e) {
|
|
keycode = e.which;
|
|
}
|
|
if (keycode == 13) {
|
|
auth_save();
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function auth_escaper(e) {
|
|
keycode = 0;
|
|
if (window.event) {
|
|
keycode = window.event.keyCode;
|
|
} else if (e) {
|
|
keycode = e.which;
|
|
}
|
|
if (keycode == 27) {
|
|
field = document.getElementById('auth_update_field');
|
|
field.value = '';
|
|
field.style.display ='none';
|
|
document.getElementById('auth_update').style.display ='inline';
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function auth_save() {
|
|
document.getElementById('auth_update_field').style.display ='none';
|
|
if (document.getElementById('auth_update_field').value) {
|
|
request = new XMLHttpRequest();
|
|
request.onreadystatechange = auth_save2;
|
|
request.open('GET', './v2/' + account + '/' + user, true);
|
|
request.setRequestHeader('X-Auth-Admin-User', creds_user);
|
|
request.setRequestHeader('X-Auth-Admin-Key', creds_key);
|
|
request.send();
|
|
}
|
|
}
|
|
|
|
function auth_save2() {
|
|
if (request.readyState == 4) {
|
|
if (request.status >= 200 && request.status <= 299) {
|
|
data = JSON.parse(request.responseText);
|
|
request = new XMLHttpRequest();
|
|
request.onreadystatechange = auth_save3;
|
|
request.open('PUT', './v2/' + account_element.innerHTML + '/' + user_element.innerHTML, true);
|
|
request.setRequestHeader('X-Auth-Admin-User', creds_user);
|
|
request.setRequestHeader('X-Auth-Admin-Key', creds_key);
|
|
request.setRequestHeader('X-Auth-User-Key', document.getElementById('auth_update_field').value);
|
|
admin = false;
|
|
reseller_admin = false;
|
|
for (ix = 0; ix < data.groups.length; ix++) {
|
|
if (data.groups[ix].name == '.admin') {
|
|
admin = true;
|
|
} else if (data.groups[ix].name == '.reseller_admin') {
|
|
reseller_admin = true;
|
|
}
|
|
}
|
|
if (admin) {
|
|
request.setRequestHeader('X-Auth-User-Admin', 'true');
|
|
}
|
|
if (reseller_admin) {
|
|
request.setRequestHeader('X-Auth-User-Reseller-Admin', 'true');
|
|
}
|
|
request.send();
|
|
} else {
|
|
alert(msg_http_error(request));
|
|
}
|
|
}
|
|
}
|
|
|
|
function auth_save3() {
|
|
if (request.readyState == 4) {
|
|
if (request.status >= 200 && request.status <= 299) {
|
|
user_area_load(user_selection);
|
|
} else {
|
|
alert(msg_http_error(request));
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="creds_clicked()">
|
|
<form onsubmit="return false">
|
|
<div id="creds_area"></div>
|
|
<div id="swauth">Swauth</div>
|
|
<div id="swauth_area"></div>
|
|
<div id="account_area"></div>
|
|
<div id="user_area"></div>
|
|
</form>
|
|
</body>
|
|
</html>
|