openstackid/public/assets/js/oauth2/profile/edit-client-data.js
smarcet 48e7b56d9a Added copy 2 clipboard feature on OAUTH2 Client Data
Change-Id: Ie6ec98a491ff543c71e2f2c396b5653a2917faea
Signed-off-by: smarcet <smarcet@gmail.com>
2020-02-29 01:06:03 -03:00

232 lines
8.1 KiB
JavaScript

jQuery(document).ready(function($){
$('#contacts').tagsinput({
trimValue: true,
onTagExists: function(item, $tag) {
$tag.hide().fadeIn();
},
allowDuplicates: false
});
$('#contacts').on('beforeItemAdd', function(event) {
// event.item: contains the item
// event.cancel: set to true to prevent the item getting added
var regex_email = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ig;
var current = regex_email.test( event.item );
if(!current)
event.cancel = true;
});
var users = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: dataClientUrls.fetchUsers,
wildcard: '%QUERY%',
prepare: function (query, settings) {
settings.url = dataClientUrls.fetchUsers+'?filter=first_name=@'+query+',last_name=@'+query+',email=@'+query;
return settings;
},
transform: function(input){
var page = input.data;
return page;
}
}
});
$('#admin_users').tagsinput({
itemValue: function(item) {
return item.id;
},
itemText: function(item) {
return item.first_name + ' ' + item.last_name;
},
freeInput: false,
allowDuplicates: false,
typeaheadjs: [
{
highlight: true,
minLength: 1
},
{
name: 'users',
display: function(item) {
return item.first_name + ' ' + item.last_name;
},
templates: {
suggestion: function (item) {
return '<p>' + item.first_name + ' ' + item.last_name + '</p>';
}
},
source: users,
limit: 10
}
]
});
for(var user of current_admin_users)
{
$('#admin_users').tagsinput('add',user);
}
$('#redirect_uris').tagsinput({
trimValue: true,
onTagExists: function(item, $tag) {
$tag.hide().fadeIn();
},
allowDuplicates: false
});
$('#redirect_uris').on('beforeItemAdd', function(event) {
var uri = new URI(event.item);
var app_type = $('#application_type').val();
var valid = app_type == 'NATIVE' ? true : uri.protocol() === 'https' ;
var valid = valid && uri.is('url') && uri.is('absolute') && uri.search() == '' && uri.fragment() == ''
if(!valid)
event.cancel = true;
});
$('#allowed_origins').tagsinput({
trimValue: true,
onTagExists: function(item, $tag) {
$tag.hide().fadeIn();
},
allowDuplicates: false
});
$('#allowed_origins').on('beforeItemAdd', function(event) {
var uri = new URI(event.item);
var valid = uri.is('url') && uri.is('absolute') && uri.protocol() === 'https' && uri.search() == '' && uri.fragment() == '' ;
if(!valid)
event.cancel = true;
});
$("body").on('click',".regenerate-client-secret",function(event){
var link = $(this).attr('href');
swal({
title: "Are you sure?",
text: "Regenerating client secret would invalidate all current tokens!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, Regenerate it!",
closeOnConfirm: true
}).then(
function(result){
if(!result) return;
$.ajax(
{
type: "PUT",
url: link,
dataType: "json",
timeout:60000,
success: function (data,textStatus,jqXHR) {
//load data...
$('#client_secret > :input').val(data.client_secret);
//$('#client_secret_expiration_date').text(data.new_expiration_date.date);
//clean token UI
$('#table-access-tokens').remove();
$('#table-refresh-tokens').remove();
},
error: function (jqXHR, textStatus, errorThrown) {
ajaxError(jqXHR, textStatus, errorThrown);
}
}
);
});
event.preventDefault();
return false;
});
$("body").on('click',"#use-refresh-token",function(event){
var use_refresh_token = $(this).is(':checked');
$.ajax(
{
type: "PUT",
url: decodeURI(dataClientUrls.refresh).replace('@use_refresh_token', use_refresh_token),
contentType: "application/json; charset=utf-8",
dataType: "json",
timeout:60000,
success: function (data,textStatus,jqXHR) {
//load data...
},
error: function (jqXHR, textStatus, errorThrown) {
ajaxError(jqXHR, textStatus, errorThrown);
}
}
);
});
$("body").on('click',"#use-rotate-refresh-token-policy",function(event){
var rotate_refresh_token = $(this).is(':checked');
$.ajax(
{
type: "PUT",
url: decodeURI(dataClientUrls.rotate).replace('@rotate_refresh_token', rotate_refresh_token),
contentType: "application/json; charset=utf-8",
dataType: "json",
timeout:60000,
success: function (data,textStatus,jqXHR) {
//load data...
},
error: function (jqXHR, textStatus, errorThrown) {
ajaxError(jqXHR, textStatus, errorThrown);
}
}
);
});
var form = $('#form-application-main-data');
var validator = form.validate({
rules: {
app_name : {required: true, free_text:true, rangelength: [1, 255]},
app_description : {required: true, free_text:true,rangelength: [1, 512]},
website: {url: true},
logo_uri: {url: true},
tos_uri: {url: true},
policy_uri: {url: true},
}
});
form.submit(function(e){
var is_valid = $(this).valid();
if (is_valid) {
$('.btn-save-client-data').attr('disabled','disabled');
var application = $(this).serializeForm();
if(is_mine) {
var admin_users = application.admin_users;
delete application.admin_users;
if (admin_users != '') {
admin_users = admin_users.split(",");
for (var i = 0; i < admin_users.length; i++) {
admin_users[i] = parseInt(admin_users[i], 10);
}
application.admin_users = admin_users;
}
}
$.ajax(
{
type: "PUT",
url: dataClientUrls.update,
data: JSON.stringify(application),
contentType: "application/json; charset=utf-8",
dataType: "json",
timeout: 60000,
success: function (data, textStatus, jqXHR) {
$('.btn-save-client-data').removeAttr('disabled');
displaySuccessMessage('Data saved successfully.', form);
},
error: function (jqXHR, textStatus, errorThrown) {
$('.btn-save-client-data').removeAttr('disabled');
ajaxError(jqXHR, textStatus, errorThrown);
}
}
);
}
e.preventDefault();
return false;
});
});