bluecloud/laravel-security-question

Helpers for managing security questions within your Laravel project

v1.0.0 2023-08-22 19:44 UTC

This package is auto-updated.

Last update: 2024-10-22 22:36:09 UTC


README

Laravel security questions helps you easily integration security question facility for your project

Installation

composer require bluecloud/laravel-security-question

Migrate Tables

Run the following command to create tables to enable saving security questions

php artisan migrate

Publish Config

The package allows you to publish a config file to change settings for the package. Run the command below and select Bluecloud\SecurityQuestionHelpers\SecurityQuestionHelpersProvider. A configuration file will be created at config/questions.php

php artisan vendor:publish

Load Questions

Run the following command

php artisan questions:migrate

Adding Trait to User

Add the HasSecurityQuestions trait to your App\Models\User model as indicated below.

use Bluecloud\SecurityQuestionHelpers\HasSecurityQuestions;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable, HasSecurityQuestions;
}

Add Question(s) for User

To add question(s) for a user, add the code below

$user = auth()->user();
$user->save_questions([
    ["security_question_id" => 1, "answer" => "Blantyre, Malawi"]
]);

Checking Question Answer

To check a user's submitted answer against the saved answers, add the code below

 $question = SecurityQuestion::find(1);
 $check = $user->check_answer($question, "Blantyre, Malawi");

Note: The questions will sync. If the question was already attached for the user, the new answer will update the existing record

Routes

To manage question, you can make use of preconfigured api endpoints

1. List Security Question

GET /security-questions

2. Create Security Question

POST /security-questions

{
    "name": "Sample security question"
}

3. Delete Security Question

DELETE /security-question/{id}

Configuration

Change package settings

1. Default Questions

Navigate to config/questions.php and find default security questions. You may change if you please.

<?php

return [
    "seeds": []
]

2. Strict Mode

By default, the package turns strict mode off. When strict mode is off, the package ignores case for the answers and removes all whitespaces and special characters to ease the matching of user submitted answers. If you want the answers to match exact case and whitespace, turn strict mode on in config/questions.php

'strict' => true,

3. Middleware

To protect /security-questions routes, and middleware in config/questions.php. For example to add auth:sanctum for authentication:

'middleware' => ["auth:sanctum"]

Base Routes Path

To change the base routes path for /security-questions for example in config/questions.php change the following line

'path' => 'api/questions',

License

Laravel Sanctum is open-sourced software licensed under the MIT license.