forked from Jexactyl/Jexactyl
-
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added support for viewing and deleting of other Application API Keys
- Loading branch information
1 parent
6ff209f
commit 8b03f0e
Showing
1 changed file
with
92 additions
and
82 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,103 +1,113 @@ | ||
@extends('layouts.admin') | ||
|
||
@section('title') | ||
Application API | ||
Application API | ||
@endsection | ||
|
||
@section('content-header') | ||
<h1>Application API<small>Control access credentials for managing this Panel via the API.</small></h1> | ||
<ol class="breadcrumb"> | ||
<li><a href="{{ route('admin.index') }}">Admin</a></li> | ||
<li class="active">Application API</li> | ||
</ol> | ||
<h1>Application API<small>Control access credentials for managing this Panel via the API.</small></h1> | ||
<ol class="breadcrumb"> | ||
<li><a href="{{ route('admin.index') }}">Admin</a></li> | ||
<li class="active">Application API</li> | ||
</ol> | ||
@endsection | ||
|
||
@section('content') | ||
<div class="row"> | ||
<div class="col-xs-12"> | ||
<div class="box box-primary"> | ||
<div class="box-header with-border"> | ||
<h3 class="box-title">Credentials List</h3> | ||
<div class="box-tools"> | ||
<a href="{{ route('admin.api.new') }}" class="btn btn-sm btn-primary">Create New</a> | ||
</div> | ||
</div> | ||
<div class="box-body table-responsive no-padding"> | ||
<table class="table table-hover"> | ||
<tr> | ||
<th>Key</th> | ||
<th>Memo</th> | ||
<th>Last Used</th> | ||
<th>Created</th> | ||
<th></th> | ||
</tr> | ||
@foreach($keys as $key) | ||
<tr> | ||
<td><code>{{ $key->identifier }}{{ decrypt($key->token) }}</code></td> | ||
<td>{{ $key->memo }}</td> | ||
<td> | ||
@if(!is_null($key->last_used_at)) | ||
@datetimeHuman($key->last_used_at) | ||
@else | ||
— | ||
@endif | ||
</td> | ||
<td>@datetimeHuman($key->created_at)</td> | ||
<td> | ||
<a href="#" data-action="revoke-key" data-attr="{{ $key->identifier }}"> | ||
<i class="fa fa-trash-o text-danger"></i> | ||
</a> | ||
</td> | ||
</tr> | ||
@endforeach | ||
</table> | ||
<div class="row"> | ||
<div class="col-xs-12"> | ||
<div class="box box-primary"> | ||
<div class="box-header with-border"> | ||
<h3 class="box-title">Credentials List</h3> | ||
<div class="box-tools"> | ||
<a href="{{ route('admin.api.new') }}" class="btn btn-sm btn-primary">Create New</a> | ||
</div> | ||
</div> | ||
<div class="box-body table-responsive no-padding"> | ||
<table class="table table-hover"> | ||
<tr> | ||
<th>Key</th> | ||
<th>Memo</th> | ||
<th>Last Used</th> | ||
<th>Created</th> | ||
<th>Created by</th> | ||
<th></th> | ||
</tr> | ||
@foreach($keys as $key) | ||
<tr> | ||
<td><code> | ||
@if(Auth::user()->id != $key->user->id) | ||
{{ $key->identifier . str_repeat('*', strlen(decrypt($key->token)))}} | ||
@else | ||
{{$key->identifier . decrypt($key->token)}} | ||
@endif | ||
</code></td> | ||
<td>{{ $key->memo }}</td> | ||
<td> | ||
@if(!is_null($key->last_used_at)) | ||
@datetimeHuman($key->last_used_at) | ||
@else | ||
— | ||
@endif | ||
</td> | ||
<td>@datetimeHuman($key->created_at)</td> | ||
<td> | ||
<a href="{{ route('admin.users.view', $key->user->id) }}">{{ $key->user->username }}</a> | ||
</td> | ||
<td> | ||
<a href="#" data-action="revoke-key" data-attr="{{ $key->identifier }}"> | ||
<i class="fa fa-trash-o text-danger"></i> | ||
</a> | ||
</td> | ||
</tr> | ||
@endforeach | ||
</table> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
@endsection | ||
|
||
@section('footer-scripts') | ||
@parent | ||
<script> | ||
$(document).ready(function() { | ||
$('[data-action="revoke-key"]').click(function (event) { | ||
var self = $(this); | ||
event.preventDefault(); | ||
swal({ | ||
type: 'error', | ||
title: 'Revoke API Key', | ||
text: 'Once this API key is revoked any applications currently using it will stop working.', | ||
showCancelButton: true, | ||
allowOutsideClick: true, | ||
closeOnConfirm: false, | ||
confirmButtonText: 'Revoke', | ||
confirmButtonColor: '#d9534f', | ||
showLoaderOnConfirm: true | ||
}, function () { | ||
$.ajax({ | ||
method: 'DELETE', | ||
url: '/admin/api/revoke/' + self.data('attr'), | ||
headers: { | ||
'X-CSRF-TOKEN': '{{ csrf_token() }}' | ||
} | ||
}).done(function () { | ||
swal({ | ||
type: 'success', | ||
title: '', | ||
text: 'API Key has been revoked.' | ||
}); | ||
self.parent().parent().slideUp(); | ||
}).fail(function (jqXHR) { | ||
console.error(jqXHR); | ||
swal({ | ||
type: 'error', | ||
title: 'Whoops!', | ||
text: 'An error occurred while attempting to revoke this key.' | ||
}); | ||
@parent | ||
<script> | ||
$(document).ready(function() { | ||
$('[data-action="revoke-key"]').click(function(event) { | ||
var self = $(this); | ||
event.preventDefault(); | ||
swal({ | ||
type: 'error', | ||
title: 'Revoke API Key', | ||
text: 'Once this API key is revoked any applications currently using it will stop working.', | ||
showCancelButton: true, | ||
allowOutsideClick: true, | ||
closeOnConfirm: false, | ||
confirmButtonText: 'Revoke', | ||
confirmButtonColor: '#d9534f', | ||
showLoaderOnConfirm: true | ||
}, function() { | ||
$.ajax({ | ||
method: 'DELETE', | ||
url: '/admin/api/revoke/' + self.data('attr'), | ||
headers: { | ||
'X-CSRF-TOKEN': '{{ csrf_token() }}' | ||
} | ||
}).done(function() { | ||
swal({ | ||
type: 'success', | ||
title: '', | ||
text: 'API Key has been revoked.' | ||
}); | ||
self.parent().parent().slideUp(); | ||
}).fail(function(jqXHR) { | ||
console.error(jqXHR); | ||
swal({ | ||
type: 'error', | ||
title: 'Whoops!', | ||
text: 'An error occurred while attempting to revoke this key.' | ||
}); | ||
}); | ||
}); | ||
}); | ||
</script> | ||
}); | ||
</script> | ||
@endsection |