2023-11-14 09:50:27 -08:00
|
|
|
<div>
|
|
|
|
<div class="panel panel-default">
|
|
|
|
<div class="panel-heading">
|
|
|
|
<div class="text-right" style="display: flex; justify-content: space-between; align-items: center;">
|
|
|
|
<a class="btn btn-info btn-sm action-link pull-right"
|
|
|
|
onclick="$('#modal-create-token').modal('show');"
|
2024-05-29 12:18:31 -07:00
|
|
|
wire:click="$dispatch('openModal')"
|
2023-11-14 09:50:27 -08:00
|
|
|
>
|
|
|
|
Create New Token
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="panel-body">
|
|
|
|
<!-- No Tokens Notice -->
|
|
|
|
@if($tokens->count() === 0)
|
|
|
|
<p class="m-b-none"
|
|
|
|
>
|
|
|
|
You have not created any personal access tokens.
|
|
|
|
</p>
|
|
|
|
@endif
|
|
|
|
|
|
|
|
<!-- Personal Access Tokens -->
|
|
|
|
<table class="table table-borderless m-b-none">
|
|
|
|
@if($tokens->count() > 0)
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th class="col-md-3">Name</th>
|
|
|
|
<th class="col-md-2">Created</th>
|
|
|
|
<th class="col-md-2">Expires</th>
|
|
|
|
<th class="col-md-2"><span class="sr-only">Delete</span></th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
@endif
|
|
|
|
@foreach($tokens as $token)
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<!-- Client Name -->
|
|
|
|
<td style="vertical-align: middle;">
|
|
|
|
{{ $token->name }}
|
|
|
|
</td>
|
|
|
|
|
|
|
|
<td style="vertical-align: middle;">
|
|
|
|
{{ $token->created_at }}
|
|
|
|
</td>
|
|
|
|
|
|
|
|
<td style="vertical-align: middle;">
|
|
|
|
{{ $token->expires_at }}
|
|
|
|
</td>
|
|
|
|
<!-- Delete Button -->
|
|
|
|
<td style="vertical-align: middle;" class="text-right">
|
2024-07-03 14:12:55 -07:00
|
|
|
<a class="action-link btn btn-danger btn-sm" wire:click="deleteToken('{{ $token->id }}')"
|
|
|
|
wire:loading.attr="disabled">
|
2023-11-14 09:50:27 -08:00
|
|
|
<i class="fas fa-trash"></i>
|
|
|
|
</a>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
2023-11-15 14:27:01 -08:00
|
|
|
@endforeach
|
2023-11-14 09:50:27 -08:00
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- Create Token Modal -->
|
2023-11-15 18:19:03 -08:00
|
|
|
<div wire:ignore.self class="modal fade" id="modal-create-token" tabindex="-1" role="dialog">
|
2023-11-15 14:51:09 -08:00
|
|
|
<div class="modal-dialog">
|
|
|
|
<div class="modal-content">
|
|
|
|
<div class="modal-header">
|
|
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
|
|
|
|
|
|
<h4 class="modal-title">
|
|
|
|
Create Token
|
|
|
|
</h4>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="modal-body">
|
|
|
|
<!-- Form Errors -->
|
2023-11-15 18:29:14 -08:00
|
|
|
@if($errors->has('name'))
|
2023-11-15 14:51:09 -08:00
|
|
|
<div class="alert alert-danger"
|
|
|
|
>
|
|
|
|
<p><strong>Whoops!</strong> Something went wrong!</p>
|
|
|
|
<br>
|
|
|
|
<ul>
|
|
|
|
<li
|
|
|
|
>
|
2023-11-15 18:29:14 -08:00
|
|
|
@error('name') <span class="error">{{ $message }}</span> @enderror
|
2023-11-15 14:51:09 -08:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
@endif
|
|
|
|
|
|
|
|
<!-- Create Token Form -->
|
|
|
|
<form class="form-horizontal" role="form"
|
|
|
|
>
|
|
|
|
<!-- Name -->
|
|
|
|
<div class="form-group">
|
|
|
|
<label class="col-md-4 control-label" for="name">Name</label>
|
|
|
|
|
|
|
|
<div class="col-md-6">
|
2023-11-15 20:35:20 -08:00
|
|
|
<input id="create-token-name" type="text" aria-label="name" class="form-control"
|
|
|
|
name="name"
|
2023-11-16 08:54:32 -08:00
|
|
|
wire:keydown.enter="createToken(name)"
|
2023-11-15 18:29:14 -08:00
|
|
|
{{-- defer because it's submitting as i type if i don't --}}
|
2024-05-29 12:10:46 -07:00
|
|
|
wire:model="name"
|
2023-11-16 09:24:54 -08:00
|
|
|
autofocus
|
2023-11-15 14:51:09 -08:00
|
|
|
>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</form>
|
2023-12-05 07:44:03 -08:00
|
|
|
|
2023-11-15 14:51:09 -08:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Modal Actions -->
|
|
|
|
<div class="modal-footer">
|
|
|
|
<button type="button" class="btn primary" data-dismiss="modal">Close</button>
|
|
|
|
|
|
|
|
<button type="button" class="btn btn-primary"
|
2023-11-15 20:35:20 -08:00
|
|
|
wire:click="createToken(name)"
|
2023-11-15 14:51:09 -08:00
|
|
|
>
|
|
|
|
Create
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2023-11-15 18:19:03 -08:00
|
|
|
|
2023-11-14 09:50:27 -08:00
|
|
|
<!-- View New Token Modal -->
|
2023-11-15 18:19:03 -08:00
|
|
|
<div class="modal fade" id="modal-access-token" tabindex="-1" role="dialog">
|
|
|
|
<div class="modal-dialog">
|
|
|
|
<div class="modal-content">
|
|
|
|
<div class="modal-header">
|
2023-11-16 08:54:32 -08:00
|
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
2023-11-15 18:19:03 -08:00
|
|
|
|
|
|
|
<h4 class="modal-title">
|
|
|
|
Personal Access Token
|
|
|
|
</h4>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="modal-body">
|
|
|
|
<p>
|
|
|
|
Here is your new personal access token. This is the only time it will be shown so don't lose it!
|
|
|
|
You may now use this token to make API requests.
|
|
|
|
</p>
|
|
|
|
|
2023-11-16 09:31:00 -08:00
|
|
|
<pre><code>{{ $newTokenString }}</code></pre>
|
2023-11-15 18:19:03 -08:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Modal Actions -->
|
|
|
|
<div class="modal-footer">
|
|
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2023-11-15 20:35:20 -08:00
|
|
|
<script>
|
2023-11-16 09:31:00 -08:00
|
|
|
window.addEventListener('tokenCreated', token => {
|
2023-11-15 20:35:20 -08:00
|
|
|
$('#modal-create-token').modal('hide');
|
|
|
|
$('#modal-access-token').modal('show');
|
|
|
|
})
|
2023-11-16 09:24:54 -08:00
|
|
|
window.addEventListener('autoFocusModal', function() {
|
|
|
|
$('#modal-create-token').on('shown.bs.modal', function() {
|
|
|
|
$(this).find('[autofocus]').focus();
|
|
|
|
});
|
|
|
|
})
|
|
|
|
// was trying to do a submit on the form when enter was pressed
|
2023-11-16 08:54:32 -08:00
|
|
|
window.addEventListener("keydown", function (event) {
|
|
|
|
if (event.key === 'Enter') {
|
|
|
|
event.preventDefault();
|
|
|
|
}
|
|
|
|
})
|
2023-11-15 20:35:20 -08:00
|
|
|
</script>
|
2023-11-14 09:50:27 -08:00
|
|
|
</div>
|