For this assignment, create a new Laravel application called "assignment-5".
Create a configurations
Table
In your database, create a table via a migration named configurations
with columns id
(primary key), name
(string), and value
(boolean). Be sure to add timestamp columns (created_at
and updated_at
) via the timestamps() method. These will be used when you update this table via Eloquent.
Insert a record into this table with name
set to maintenance-mode
and value
set to false
.
Maintenance Mode Middleware
You are going to create middleware that redirects users to a maintenance mode page (that you design yourself) at the URL path /maintenance
if there is a record in the configurations
table with a name
of maintenance-mode
and its value
is true
. If that record's value
is false
, users should be able to access the URL they requested. Create a test page at /test
with anything you want on it with your middleware applied to it to verify everything works as expected.
If a user makes a request to /maintenance
and the maintenance-mode
setting is set false
, the user should be redirected to /
.
Name the middleware class MaintenanceMode
.
A Settings Page
Create a secret page at /secret
where you can toggle the value
column of the record in the configurations
table with a name
of maintenance-mode
using a checkbox. This page should not have the MaintenanceMode
middleware applied to it.
Hint: Use $request->has()
or $request->boolean()
to determine if the checkbox is checked or not.
https://laravel.com/docs/10.x/requests#input-presence https://laravel.com/docs/10.x/requests#retrieving-boolean-input-values
Other Requirements
- Use Eloquent for all database queries
Submission
Create a video with audio using Zoom where you demo your assignment and explain where you fulfilled or did not fulfill each requirement. Put a link to this recording in the README.md
file at the root of your project.
https://classroom.github.com/a/WNrxYxL4
If you're having problems uploading to GitHub, please zip up your project excluding the vendor
folder and email it to the instructor and TA. Please include the Zoom recording URL in the email.