middleware for classes starting created
This commit is contained in:
parent
027f788596
commit
0d1b25871b
@ -11,4 +11,8 @@ class AdminPanelController extends Controller
|
|||||||
return view('layouts.adminpanel');
|
return view('layouts.adminpanel');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_connection()
|
||||||
|
{
|
||||||
|
return view('admin.admin_testconnection');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,14 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\User;
|
||||||
|
|
||||||
|
use App\Attendance;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
use App\Subject;
|
use App\Subject;
|
||||||
use App\Classes;
|
use App\Classes;
|
||||||
|
use App\Room;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
class UserClassesController extends Controller
|
class UserClassesController extends Controller
|
||||||
@ -43,4 +46,33 @@ class UserClassesController extends Controller
|
|||||||
Classes::find($classes_id);
|
Classes::find($classes_id);
|
||||||
return redirect(route('user_classes'));
|
return redirect(route('user_classes'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function start_classes($classes_id)
|
||||||
|
{
|
||||||
|
$classes_code = generateRandomString(10);
|
||||||
|
session([
|
||||||
|
'CLASSES_CODE' => $classes_code,
|
||||||
|
'CLASSES_ID' => $classes_id
|
||||||
|
]);
|
||||||
|
return view('user.user_classes_start', ['verified' => false, 'classes_code' => $classes_code]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function start_classes_verified(Request $request)
|
||||||
|
{
|
||||||
|
$classes = Classes::find($request->get('classes_id'));
|
||||||
|
$room = Room::find(Subject::find($classes->subject_id)->room_id)->name;
|
||||||
|
$student_id_number = $request->input('student_id_number');
|
||||||
|
$student_name = $request->input('student_name');
|
||||||
|
$student_surname = $request->input('student_surname');
|
||||||
|
$seat_number = $request->input('seat_number');
|
||||||
|
Attendance::create([
|
||||||
|
'classes_id' => $classes->id,
|
||||||
|
'student_id_number' => $student_id_number,
|
||||||
|
'student_name' => $student_name,
|
||||||
|
'student_surname' => $student_surname,
|
||||||
|
'seat_number' => $seat_number,
|
||||||
|
]);
|
||||||
|
$attendances = Attendance::where('classes_id', $classes->id)->get();
|
||||||
|
return view('user.user_classes_start', ['verified' => true, 'room' => $room, 'attendances' => $attendances]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,6 +61,7 @@ class Kernel extends HttpKernel
|
|||||||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||||
|
'classesCode' => \App\Http\Middleware\CheckClassesCode::class,
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
41
app/Http/Middleware/CheckClassesCode.php
Normal file
41
app/Http/Middleware/CheckClassesCode.php
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use App\Classes;
|
||||||
|
use App\Subject;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Closure;
|
||||||
|
|
||||||
|
class CheckClassesCode
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Handle an incoming request.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @param \Closure $next
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function handle($request, Closure $next)
|
||||||
|
{
|
||||||
|
$classes_code_from_request = $request->input('classes_code');
|
||||||
|
$classes_code_from_session = session()->get('CLASSES_CODE');
|
||||||
|
$classes_id = session()->get('CLASSES_ID');
|
||||||
|
$classes = Classes::find($classes_id);
|
||||||
|
if(!$classes) {
|
||||||
|
return redirect('home');
|
||||||
|
} else {
|
||||||
|
if ($classes_code_from_request != $classes_code_from_session) {
|
||||||
|
return redirect('home');
|
||||||
|
} else {
|
||||||
|
$user_id = Subject::where('id', $classes->subject_id)->first()->user_id;
|
||||||
|
if (!$user_id || $user_id != Auth::id()) {
|
||||||
|
return redirect('home');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$request->attributes->add(['classes_id' => $classes->id]);
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
}
|
@ -19,6 +19,6 @@ class VerifyCsrfToken extends Middleware
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $except = [
|
protected $except = [
|
||||||
//
|
'user/classes/start'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
10
app/helpers.php
Normal file
10
app/helpers.php
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
function generateRandomString($length = 10) {
|
||||||
|
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||||
|
$charactersLength = strlen($characters);
|
||||||
|
$randomString = '';
|
||||||
|
for ($i = 0; $i < $length; $i++) {
|
||||||
|
$randomString .= $characters[rand(0, $charactersLength - 1)];
|
||||||
|
}
|
||||||
|
return $randomString;
|
||||||
|
}
|
@ -38,6 +38,11 @@
|
|||||||
"classmap": [
|
"classmap": [
|
||||||
"database/seeds",
|
"database/seeds",
|
||||||
"database/factories"
|
"database/factories"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
|
||||||
|
"app/helpers.php"
|
||||||
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
|
@ -14,11 +14,13 @@ class ClassesTableSeeder extends Seeder
|
|||||||
DB::table('classes')->insert([
|
DB::table('classes')->insert([
|
||||||
'subject_id' => 1,
|
'subject_id' => 1,
|
||||||
'date' => '2019-12-02',
|
'date' => '2019-12-02',
|
||||||
|
'code' => generateRandomString(10)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
DB::table('classes')->insert([
|
DB::table('classes')->insert([
|
||||||
'subject_id' => 2,
|
'subject_id' => 2,
|
||||||
'date' => '2019-12-02',
|
'date' => '2019-12-02',
|
||||||
|
'code' => generateRandomString(10)
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
28
resources/views/admin/admin_testconnection.blade.php
Normal file
28
resources/views/admin/admin_testconnection.blade.php
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
@extends('layouts.adminpanel')
|
||||||
|
|
||||||
|
@section('title') Admin Panel - Users @endsection
|
||||||
|
|
||||||
|
@section('admin_content')
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<form method="POST" action="{{ route('user_start_classes_verified') }}">
|
||||||
|
<label for="classes_code"> Kod: </label>
|
||||||
|
<input type="text" name="classes_code" id="classes_code">
|
||||||
|
|
||||||
|
<label for="student_id_number"> Student ID: </label>
|
||||||
|
<input type="text" name="student_id_number" id="student_id_number">
|
||||||
|
|
||||||
|
<label for="student_name"> Student name: </label>
|
||||||
|
<input type="text" name="student_name" id="student_name">
|
||||||
|
|
||||||
|
<label for="student_surname"> Student surname: </label>
|
||||||
|
<input type="text" name="student_surname" id="student_surname">
|
||||||
|
|
||||||
|
<label for="seat_number"> Seat number: </label>
|
||||||
|
<input type="text" name="seat_number" id="seat_number">
|
||||||
|
|
||||||
|
<button type="submit"> Test connection </button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
@ -16,9 +16,9 @@
|
|||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<a href="{{ route('user_subjects', ['weekday']) }}" class="btn btn-primary"> My subjects </a>
|
<a href="{{ route('user_subjects') }}" class="btn btn-primary"> My subjects </a>
|
||||||
<a href="{{ route('user_classes', ['subject_id']) }}" class="btn btn-primary"> My classes </a>
|
<a href="{{ route('user_classes') }}" class="btn btn-primary"> My classes </a>
|
||||||
<a href="{{ route('user_attendances', ['classes_id']) }}" class="btn btn-primary"> Attendance </a>
|
<a href="{{ route('user_attendances') }}" class="btn btn-primary"> Attendance </a>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
@yield('user_content')
|
@yield('user_content')
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<a href="{{ route('admin_rooms') }}" class="btn btn-primary"> Rooms </a>
|
<a href="{{ route('admin_rooms') }}" class="btn btn-primary"> Rooms </a>
|
||||||
<a href="{{ route('admin_classes') }}" class="btn btn-primary"> Classes </a>
|
<a href="{{ route('admin_classes') }}" class="btn btn-primary"> Classes </a>
|
||||||
<a href="{{ route('admin_attendances') }}" class="btn btn-primary"> Attendances </a>
|
<a href="{{ route('admin_attendances') }}" class="btn btn-primary"> Attendances </a>
|
||||||
|
<a href="{{ route('admin_test_connection') }}" class="btn btn-primary"> Test connection </a>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
@yield('admin_content')
|
@yield('admin_content')
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h4 class="card-header"> Add new attendance record </h4>
|
<h4 class="card-header"> Add new attendance record </h4>
|
||||||
<form method="POST" action="{{ route('user_add_attendance', [Auth::user()->id]) }}" class="col-md-12">
|
<form method="POST" action="{{ route('user_add_attendance') }}" class="col-md-12">
|
||||||
@csrf
|
@csrf
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h4 class="card-header"> Add new classes </h4>
|
<h4 class="card-header"> Add new classes </h4>
|
||||||
<form method="POST" action="{{ route('user_add_classes', [Auth::user()->id]) }}">
|
<form method="POST" action="{{ route('user_add_classes') }}">
|
||||||
@csrf
|
@csrf
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
@ -78,12 +78,16 @@
|
|||||||
<th> Date </th>
|
<th> Date </th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
@foreach ($classes_list as $classes_item)
|
@foreach ($classes_list as $classes_item)
|
||||||
<tr>
|
<tr>
|
||||||
<td> {{ App\Subject::find($classes_item->subject_id)->name }}, {{ App\Subject::find($classes_item->subject_id)->type }},
|
<td> {{ App\Subject::find($classes_item->subject_id)->name }}, {{ App\Subject::find($classes_item->subject_id)->type }},
|
||||||
{{ App\Subject::find($classes_item->subject_id)->weekday }} {{ App\Subject::find($classes_item->subject_id)->time }}</td>
|
{{ App\Subject::find($classes_item->subject_id)->weekday }} {{ App\Subject::find($classes_item->subject_id)->time }}</td>
|
||||||
<td> {{ $classes_item->date }} </td>
|
<td> {{ $classes_item->date }} </td>
|
||||||
|
<td>
|
||||||
|
<a href="{{ route('user_start_classes', [$classes_item->id]) }}" name="start-classes-btn" class="btn btn-warning"> Rozpocznij zapisy </a>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ route('user_delete_classes', [$classes_item->id]) }}" name="delete-classes-btn" class="btn btn-danger"> Delete </a>
|
<a href="{{ route('user_delete_classes', [$classes_item->id]) }}" name="delete-classes-btn" class="btn btn-danger"> Delete </a>
|
||||||
</td>
|
</td>
|
||||||
|
36
resources/views/user/user_classes_start.blade.php
Normal file
36
resources/views/user/user_classes_start.blade.php
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
@extends('home')
|
||||||
|
|
||||||
|
@section('title') My Panel - Classes @endsection
|
||||||
|
|
||||||
|
@section('user_content')
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="card-body">
|
||||||
|
@if(!$verified)
|
||||||
|
<p>
|
||||||
|
Wprowadź poniższy kod do programu:
|
||||||
|
</p>
|
||||||
|
<p> {{ $classes_code }}</p>
|
||||||
|
@else
|
||||||
|
<p> Połączono prawidłowo.</p>
|
||||||
|
<p> Zajęcia odbywają się w sali {{ $room }}.</p>
|
||||||
|
|
||||||
|
@if($attendances)
|
||||||
|
<p> Aktualna liczba studentów w sali: {{ $attendances->count() }}</p>
|
||||||
|
<br><br>
|
||||||
|
@foreach($attendances as $attendance)
|
||||||
|
<p> Student ID number: {{ $attendance->student_id_number }}</p>
|
||||||
|
<p> Student name: {{ $attendance->student_name }}</p>
|
||||||
|
<p> Student surname: {{ $attendance->student_surname }}</p>
|
||||||
|
<p> Seat number: {{ $attendance->seat_number }}</p>
|
||||||
|
<br><br>
|
||||||
|
@endforeach
|
||||||
|
@else
|
||||||
|
<p> Aktualna liczba studentów w sali: 0</p>
|
||||||
|
<br><br>
|
||||||
|
@endif
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
@ -7,7 +7,7 @@
|
|||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h4 class="card-header"> Add new subject </h4>
|
<h4 class="card-header"> Add new subject </h4>
|
||||||
<form method="POST" action="{{ route('user_add_subject', [Auth::user()->id]) }}">
|
<form method="POST" action="{{ route('user_add_subject') }}">
|
||||||
@csrf
|
@csrf
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>
|
<label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>
|
||||||
|
@ -25,6 +25,7 @@ Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function()
|
|||||||
Route::get('/rooms', 'AdminRoomsController@index')->name('admin_rooms');
|
Route::get('/rooms', 'AdminRoomsController@index')->name('admin_rooms');
|
||||||
Route::get('/classes', 'AdminClassesController@index')->name('admin_classes');
|
Route::get('/classes', 'AdminClassesController@index')->name('admin_classes');
|
||||||
Route::get('/attendances', 'AdminAttendancesController@index')->name('admin_attendances');
|
Route::get('/attendances', 'AdminAttendancesController@index')->name('admin_attendances');
|
||||||
|
Route::get('/test', 'AdminPanelController@test_connection')->name('admin_test_connection');
|
||||||
|
|
||||||
Route::group(array('prefix' => 'add'), function() {
|
Route::group(array('prefix' => 'add'), function() {
|
||||||
Route::post('/user', 'AdminUsersController@add_user')->name('admin_add_user');
|
Route::post('/user', 'AdminUsersController@add_user')->name('admin_add_user');
|
||||||
@ -54,6 +55,9 @@ Route::group(array('prefix' => 'user', 'namespace' => 'User'), function() { //TO
|
|||||||
Route::get('/classes/{groupBy?}', 'UserClassesController@index')->name('user_classes');
|
Route::get('/classes/{groupBy?}', 'UserClassesController@index')->name('user_classes');
|
||||||
Route::get('/attendance/{groupBy?}', 'UserAttendancesController@index')->name('user_attendances');
|
Route::get('/attendance/{groupBy?}', 'UserAttendancesController@index')->name('user_attendances');
|
||||||
|
|
||||||
|
Route::get('/classes/start/{classes_id}', 'UserClassesController@start_classes')->name('user_start_classes');
|
||||||
|
Route::post('/classes/start', 'UserClassesController@start_classes_verified')->name('user_start_classes_verified')->middleware('classesCode');
|
||||||
|
|
||||||
Route::group(array('prefix' => 'add'), function() {
|
Route::group(array('prefix' => 'add'), function() {
|
||||||
Route::post('/subject', 'UserSubjectsController@add_subject')->name('user_add_subject');
|
Route::post('/subject', 'UserSubjectsController@add_subject')->name('user_add_subject');
|
||||||
Route::post('/classes', 'UserClassesController@add_classes')->name('user_add_classes');
|
Route::post('/classes', 'UserClassesController@add_classes')->name('user_add_classes');
|
||||||
@ -71,6 +75,7 @@ Route::group(array('prefix' => 'user', 'namespace' => 'User'), function() { //TO
|
|||||||
Route::get('/classes/{classes_id}/{groupBy?}', 'UserClassesController@edit_classes')->name('user_edit_classes');
|
Route::get('/classes/{classes_id}/{groupBy?}', 'UserClassesController@edit_classes')->name('user_edit_classes');
|
||||||
Route::get('/attendance/{attendance_id}/{groupBy?}', 'UserAttendancesController@edit_attendance')->name('user_edit_attendance');
|
Route::get('/attendance/{attendance_id}/{groupBy?}', 'UserAttendancesController@edit_attendance')->name('user_edit_attendance');
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user