Skip to content

Commit

Permalink
Merge pull request #53 from Newman101/feature/api-asynchronous
Browse files Browse the repository at this point in the history
API: Asynchronous Token Regeneration
  • Loading branch information
jremes-foss committed Oct 24, 2020
2 parents f4cb163 + c27f05f commit b702b3a
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 14 deletions.
7 changes: 4 additions & 3 deletions app/Http/Controllers/SettingsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\User;
use Auth;

Expand All @@ -16,12 +17,12 @@ public function index()
return view('settings')->with('api_token', $api_token);
}

public function updateApiToken(Request $request)
public function updateApiToken()
{
$user_id = Auth::user()->id;
$user = User::where('id', $user_id)->first();
$user->api_token = $request->get('inputApiToken');
$user->api_token = Str::random(60);
$user->save();
return redirect()->route('settings')->with('success', 'API Token updated!');
return response()->json($user->api_token);
}
}
6 changes: 1 addition & 5 deletions resources/views/layouts/app.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
<li><a href="{{ route('scoreboard') }}">Scoreboard</a></li>
<li><a href="{{ route('announcements') }}">Announcements</a></li>
<li><a href="{{ route('scontent') }}">Rules</a></li>
<li><a href="#">Dashboard</a></li>
<li><a href="{{ route('settings') }}">Settings</a></li>
</ul>
</li>
<li class="dropdown">
Expand Down Expand Up @@ -114,9 +114,5 @@
@yield('scripts')

</div>

<!-- Scripts -->
<script src="{{ asset('js/app.js') }}"></script>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
</body>
</html>
34 changes: 29 additions & 5 deletions resources/views/settings.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,43 @@
<div class="container">
<div class="row" style="max-width: 90%">
<div class="col-md-8">
<form class="form form-horizontal" role="form" method="post" enctype="multipart/form-data" action="{{ route('user.updateApiToken') }}">
{{ method_field('post') }}
{{ csrf_field() }}
<form class="form form-horizontal" id="apiTokenForm" role="form" method="post" enctype="multipart/form-data" action="{{ route('user.updateApiToken') }}">
<div class="form-group">
<label for="inputApiToken">API Token</label>
<div class="input-group ApiToken">
<span class="input-group-addon"><i class="glyphicon glyphicon-console"></i></span>
<input type="text" class="form-control" id="inputApiToken" name="inputApiToken" value="{{ $api_token }}">
<input type="text" class="form-control" id="inputApiToken" name="inputApiToken" value="{{ $api_token }}" readonly>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
<button id="regenerate" type="submit" class="btn btn-primary">Regenerate</button>
</form>
</div>
</div>
</div>
@endsection
@section('scripts')
<script type="text/javascript">
$(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
}
});
$('#regenerate').click(function(e) {
e.preventDefault();
$.ajax({
url: "{{ route('user.updateApiToken') }}",
type: "POST",
contentType: "json",
success: function(data) {
console.log("Success");
$('#inputApiToken').val(data);
},
error: function() {
console.log("ERROR");
}
});
});
});
</script>
@endsection
2 changes: 1 addition & 1 deletion tests/Unit/ApiTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public function testApiTokenRefresh()
$response = $this->json('POST', 'settings/updateApiToken', [
'api_token' => 'FOOBAR2'
]);
$response->assertStatus(302);
$response->assertStatus(200);
}

public function testApiInterface()
Expand Down

0 comments on commit b702b3a

Please sign in to comment.