blob: ada804171dafc3182de348d4d9176e22730acaf1 [file] [log] [blame]
@extends('layout.basic')
@section('page-header')
@parent
{{ HTML::style('css/admin.css')}}
@stop
@section('content')
<div id="wrapper">
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
@include( 'partials/dashboard-block')
<div id="page-wrapper">
<div class="container-fluid">
<div class="col-md-12">
@if( Session::has("message"))
<div class="alert alert-success alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span
class="sr-only">Close</span></button>
{{{ Session::get("message") }}}
</div>
{{ Session::forget("message") }}
@endif
@if( Session::has("error-message"))
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span
class="sr-only">Close</span></button>
{{{ Session::get("error-message") }}}
</div>
{{ Session::forget("error-message") }}
@endif
<h1 class="text-center">SSH Keys</h1>
<div class="error-alert"></div>
@if(Session::has("admin"))
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Generate New SSH Key</h3>
</div>
<div class="panel-body">
<form id="new-ssh-form-submit" class="form-inline" action="{{URL::to('/')}}/admin/create-ssh-token" method="post">
<div id="credential-description-form-group" class="form-group">
<label for="credential-description" class="sr-only">Description for new SSH key</label>
<input type="text" id="credential-description" name="description" class="form-control" placeholder="Description" required/>
</div>
<button type="submit" class="btn btn-default">Generate</button>
</form>
</div>
</div>
@endif
<ul class="list-group">
@foreach ($tokens as $val)
<li class="list-group-item credential-item">
<div class="row row_desc">
<div class="col-md-12 ssh_description">
@if($val->description!=null)
<p><strong>{{{ $val->description }}}</strong></p>
@else
<p style="color:red"><strong>NO DESCRIPTION! ({{{ $val->token }}})</strong></p>
@endif
</div>
</div><!-- .row -->
<div class="row row_details">
<div class="col-md-6">
<div class="input-group">
<input type="text" class="form-control public-key" readonly
id="credential-publickey-{{$val->token}}"
value="{{ $val->publicKey }}">
<span class="input-group-btn">
<button type="button" class="btn btn-default copy-credential"
data-clipboard-target="#credential-publickey-{{$val->token}}"
data-toggle="tooltip" data-placement="bottom"
data-title="Copied!" data-trigger="manual">
Copy
</button>
</span>
</div>
</div>
<div class="col-md-6">
<button data-token="{{$val->token}}"class="btn btn-danger delete-credential"
@if(!Session::has("admin")) disabled @endif>Delete</button>
</div><br/>
</div><!-- .row -->
</li>
@endforeach
</ul>
<!--
@if(Session::has("admin"))
<div class="row">
<h1 class="text-center">My Proxy Credentials</h1>
<div class="col-md-offset-3 col-md-6">
<table class="table table-striped table-condensed">
<tr>
<td>My Proxy Server</td>
<td><input type="text" class="form-control" placeholder="" value=""/></td>
</tr>
<tr>
<td>Username</td>
<td><input type="text" class="form-control" placeholder="" value=""/></td>
</tr>
<tr>
<td>Passphrase</td>
<td><input type="text" class="form-control" placeholder="" value=""/></td>
</tr>
</table>
<table class="table">
<tr class="text-center table-condensed">
<td>
<button class="btn btn-default">Submit</button>
</td>
</tr>
</table>
</div>
</div>
@endif
-->
<br/>
<h1 class="text-center">Password Credentials</h1>
@if(Session::has("admin"))
<table class="table">
<tr class="text-center table-condensed">
<td>
<button class="btn btn-default" data-toggle="modal" data-target="#pwd-cred-form">Register a new password credential</button>
</td>
</tr>
</table>
<div class="loading-img-pwd text-center hide">
<img src="../../assets/ajax-loader.gif"/>
</div>
@endif
<ul class="list-group">
@foreach ($pwdTokens as $token => $desc)
<li class="list-group-item credential-item">
<div class="row row_desc">
<div class="col-md-12 pwd_description">
<p><strong>{{{ $desc }}}</strong></p>
</div>
</div><!-- .row -->
<div class="row row_details">
<div class="col-md-6">
<div class="input-group">
<input type="text" class="form-control public-key" readonly
id="credential-publickey-{{$token}}"
value="{{ $token }}">
<span class="input-group-btn">
<button type="button" class="btn btn-default copy-credential"
data-clipboard-target="#credential-publickey-{{$token}}"
data-toggle="tooltip" data-placement="bottom"
data-title="Copied!" data-trigger="manual">
Copy
</button>
</span>
</div>
</div>
<div class="col-md-6">
<button data-token="{{$token}}"class="btn btn-danger remove-pwd-token"
@if(!Session::has("admin")) disabled @endif>Delete</button>
</div><br/>
</div><!-- .row -->
</li>
@endforeach
</ul>
{{--<h1 class="text-center">Amazon Credentials</h1>--}}
{{--<table class="table table-striped table-condensed">--}}
{{--<tr class="text-center">--}}
{{--<td>Under Development</td>--}}
{{--</tr>--}}
{{--</table>--}}
{{--<h1 class="text-center">OAuth MyProxy</h1>--}}
{{--<table class="table table-striped table-condensed">--}}
{{--<tr class="text-center">--}}
{{--<td>Under Development</td>--}}
{{--</tr>--}}
{{--</table>--}}
</div>
</div>
</div>
</div>
<div class="modal fade" id="delete-credential-modal" tabindex="-1" role="dialog" aria-labelledby="delete-credential-modal-title"
aria-hidden="true">
<div class="modal-dialog">
<form action="{{URL::to('/')}}/admin/remove-ssh-token" method="POST">
<div class="modal-content">
<div class="modal-header">
<h3 class="text-center" id="delete-credential-modal-title">Delete SSH Public Key</h3>
</div>
<div class="modal-body">
<input type="hidden" class="form-control" name="token"/>
Do you really want to delete the "<span class="credential-description"></span>" SSH public key?
</div>
<div class="modal-footer">
<div class="form-group">
<input type="submit" class="btn btn-danger" value="Delete"/>
<input type="button" class="btn btn-default" data-dismiss="modal" value="Cancel"/>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="modal fade" id="delete-pwd-modal" tabindex="-1" role="dialog" aria-labelledby="delete-pwd-modal-title"
aria-hidden="true">
<div class="modal-dialog">
<form action="{{URL::to('/')}}/admin/remove-pwd-token" method="POST">
<div class="modal-content">
<div class="modal-header">
<h3 class="text-center" id="delete-pwd-modal-title">Delete Password Credential</h3>
</div>
<div class="modal-body">
<input type="hidden" class="form-control" name="token"/>
Do you really want to delete the "<span class="pwd-description"></span>" Password Credential?
</div>
<div class="modal-footer">
<div class="form-group">
<input type="submit" class="btn btn-danger" value="Delete"/>
<input type="button" class="btn btn-default" data-dismiss="modal" value="Cancel"/>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="modal fade" id="pwd-cred-form" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<button type="button" class="close"
data-dismiss="modal">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title">
Password Credential
</h4>
</div>
<!-- Modal Body -->
<div class="modal-body">
<form role="form" id="register-pwd-form" action="{{URL::to('/')}}/admin/create-pwd-token" method="POST">
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" required="required"
id="username" name="username" placeholder="Username"/>
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="text" class="form-control" required="required"
id="password" name="password" placeholder="Password"/>
</div>
<div class="form-group">
<label for="description">Description</label>
<input type="text" class="form-control" required="required"
id="description" name="description" placeholder="Description"/>
</div>
<!-- Modal Footer -->
<div class="modal-footer">
<button type="button" class="btn btn-default"
data-dismiss="modal">
Close
</button>
<button type="submit" class="btn btn-primary">
Save changes
</button>
</div>
</form>
</div>
</div>
</div>
</div>
@stop
@section('scripts')
@parent
{{ HTML::script('js/clipboard.min.js') }}
<script>
$('.delete-credential').on('click', function(e){
var removeSpan = $(this);
var par = removeSpan.closest("li");
var credentialStoreToken = removeSpan.data("token");
var credentialDescription = $.trim(par.find('.ssh_description').text());
$("#delete-credential-modal input[name=token]").val(credentialStoreToken);
$("#delete-credential-modal .credential-description").text(credentialDescription);
$("#delete-credential-modal").modal("show");
});
$('#credential-description').on('invalid', function(event){
this.setCustomValidity("Please provide a description");
$('#credential-description-form-group').addClass('has-error');
});
$('#credential-description').on('keyup input change', function(event){
if (this.checkValidity) {
// Reset custom error message. If it isn't empty string it is considered invalid.
this.setCustomValidity("");
// checkValidity will cause invalid event to be dispatched. See invalid
// event handler above which will set the custom error message.
var valid = this.checkValidity();
$('#credential-description-form-group').toggleClass('has-error', !valid);
}
});
$("#new-ssh-form-submit").submit( function(){
var description = $("#credential-description").val();
var items = $('.ssh_description').map(function () { return $.trim($(this).text()); }).get();
for(var i=0;i<items.length;++i){
if(description === $.trim(items[i])){
$('.error-alert').html("<div class='alert alert-danger' role='alert'><button type='button' class='close' data-dismiss='alert'><span aria-hidden='true'>&times;</span><span class='sr-only'>Close</span></button>Description should be unique for each key.</div>");
return false;
}
}
return true;
});
$("#register-pwd-form").submit( function() {
var pcred_description = $("#description").val();
var items = $('.pwd_description').map(function() { return $.trim($(this).text()); }).get();
for(var i=0;i<items.length;++i){
if(pcred_description === $.trim(items[i])){
$("#pwd-cred-form").modal("hide");
$('.error-alert').html("<div class='alert alert-danger' role='alert'><button type='button' class='close' data-dismiss='alert'><span aria-hidden='true'>&times;</span><span class='sr-only'>Close</span></button>Description should be unique for each key.</div>");
return false;
}
}
return true;
});
$(".remove-pwd-token").click( function(){
var removeSpan = $(this);
var par = removeSpan.closest("li");
var credentialStoreToken = removeSpan.data("token");
var credentialDescription = $.trim(par.find('.pwd_description').text());
$("#delete-pwd-modal input[name=token]").val(credentialStoreToken);
$("#delete-pwd-modal .pwd-description").text(credentialDescription);
$("#delete-pwd-modal").modal("show");
});
var clipboard = new Clipboard('.copy-credential');
clipboard.on('success', function(e){
// Show 'Copied!' tooltip for 2 seconds on successful copy
$(e.trigger).tooltip('show');
setTimeout(function(){
$(e.trigger).tooltip('hide');
}, 2000);
});
</script>
@stop