Skip to content

Commit 6c8b1d4

Browse files
author
Gareth Redfern
committed
initial commit
0 parents  commit 6c8b1d4

File tree

101 files changed

+11716
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+11716
-0
lines changed

.editorconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
indent_style = space
8+
indent_size = 4
9+
trim_trailing_whitespace = true
10+
11+
[*.md]
12+
trim_trailing_whitespace = false
13+
14+
[*.{yml,yaml}]
15+
indent_size = 2

.env.example

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
APP_NAME=Laravel
2+
APP_ENV=local
3+
APP_KEY=
4+
APP_DEBUG=true
5+
APP_URL=http://laravel-api.test
6+
7+
LOG_CHANNEL=stack
8+
LOG_LEVEL=debug
9+
10+
DB_CONNECTION=mysql
11+
DB_HOST=mysql
12+
DB_PORT=3306
13+
DB_DATABASE=laravel_api
14+
DB_USERNAME=root
15+
DB_PASSWORD=
16+
17+
BROADCAST_DRIVER=log
18+
CACHE_DRIVER=file
19+
QUEUE_CONNECTION=sync
20+
SESSION_DRIVER=file
21+
SESSION_LIFETIME=120
22+
23+
MEMCACHED_HOST=memcached
24+
25+
REDIS_HOST=redis
26+
REDIS_PASSWORD=null
27+
REDIS_PORT=6379
28+
29+
MAIL_MAILER=smtp
30+
MAIL_HOST=mailhog
31+
MAIL_PORT=1025
32+
MAIL_USERNAME=null
33+
MAIL_PASSWORD=null
34+
MAIL_ENCRYPTION=null
35+
MAIL_FROM_ADDRESS=null
36+
MAIL_FROM_NAME="${APP_NAME}"
37+
38+
AWS_ACCESS_KEY_ID=
39+
AWS_SECRET_ACCESS_KEY=
40+
AWS_DEFAULT_REGION=us-east-1
41+
AWS_BUCKET=
42+
43+
PUSHER_APP_ID=
44+
PUSHER_APP_KEY=
45+
PUSHER_APP_SECRET=
46+
PUSHER_APP_CLUSTER=mt1
47+
48+
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
49+
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
50+
51+
SANCTUM_STATEFUL_DOMAINS=localhost:8080
52+
SESSION_DOMAIN=localhost

.gitattributes

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
* text=auto
2+
*.css linguist-vendored
3+
*.scss linguist-vendored
4+
*.js linguist-vendored
5+
CHANGELOG.md export-ignore

.gitignore

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/node_modules
2+
/public/hot
3+
/public/storage
4+
/storage/*.key
5+
/vendor
6+
.env
7+
.env.backup
8+
.phpunit.result.cache
9+
docker-compose.override.yml
10+
Homestead.json
11+
Homestead.yaml
12+
npm-debug.log
13+
yarn-error.log

.styleci.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
php:
2+
preset: laravel
3+
disabled:
4+
- no_unused_imports
5+
finder:
6+
not-name:
7+
- index.php
8+
- server.php
9+
js:
10+
finder:
11+
not-name:
12+
- webpack.mix.js
13+
css: true

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400"></a></p>
2+
3+
## Basic Laravel API Using Sanctum & Fortify
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
namespace App\Actions\Fortify;
4+
5+
use App\Models\User;
6+
use Illuminate\Support\Facades\Hash;
7+
use Illuminate\Support\Facades\Validator;
8+
use Illuminate\Validation\Rule;
9+
use Laravel\Fortify\Contracts\CreatesNewUsers;
10+
11+
class CreateNewUser implements CreatesNewUsers
12+
{
13+
use PasswordValidationRules;
14+
15+
/**
16+
* Validate and create a newly registered user.
17+
*
18+
* @param array $input
19+
* @return \App\Models\User
20+
*/
21+
public function create(array $input)
22+
{
23+
Validator::make($input, [
24+
'name' => ['required', 'string', 'max:255'],
25+
'email' => [
26+
'required',
27+
'string',
28+
'email',
29+
'max:255',
30+
Rule::unique(User::class),
31+
],
32+
'password' => $this->passwordRules(),
33+
])->validate();
34+
35+
return User::create([
36+
'name' => $input['name'],
37+
'email' => $input['email'],
38+
'password' => Hash::make($input['password']),
39+
]);
40+
}
41+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace App\Actions\Fortify;
4+
5+
use Laravel\Fortify\Rules\Password;
6+
7+
trait PasswordValidationRules
8+
{
9+
/**
10+
* Get the validation rules used to validate passwords.
11+
*
12+
* @return array
13+
*/
14+
protected function passwordRules()
15+
{
16+
return ['required', 'string', new Password, 'confirmed'];
17+
}
18+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace App\Actions\Fortify;
4+
5+
use Illuminate\Support\Facades\Hash;
6+
use Illuminate\Support\Facades\Validator;
7+
use Laravel\Fortify\Contracts\ResetsUserPasswords;
8+
9+
class ResetUserPassword implements ResetsUserPasswords
10+
{
11+
use PasswordValidationRules;
12+
13+
/**
14+
* Validate and reset the user's forgotten password.
15+
*
16+
* @param mixed $user
17+
* @param array $input
18+
* @return void
19+
*/
20+
public function reset($user, array $input)
21+
{
22+
Validator::make($input, [
23+
'password' => $this->passwordRules(),
24+
])->validate();
25+
26+
$user->forceFill([
27+
'password' => Hash::make($input['password']),
28+
])->save();
29+
}
30+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
namespace App\Actions\Fortify;
4+
5+
use Illuminate\Support\Facades\Hash;
6+
use Illuminate\Support\Facades\Validator;
7+
use Laravel\Fortify\Contracts\UpdatesUserPasswords;
8+
9+
class UpdateUserPassword implements UpdatesUserPasswords
10+
{
11+
use PasswordValidationRules;
12+
13+
/**
14+
* Validate and update the user's password.
15+
*
16+
* @param mixed $user
17+
* @param array $input
18+
* @return void
19+
*/
20+
public function update($user, array $input)
21+
{
22+
Validator::make($input, [
23+
'current_password' => ['required', 'string'],
24+
'password' => $this->passwordRules(),
25+
])->after(function ($validator) use ($user, $input) {
26+
if (! Hash::check($input['current_password'], $user->password)) {
27+
$validator->errors()->add('current_password', __('The provided password does not match your current password.'));
28+
}
29+
})->validateWithBag('updatePassword');
30+
31+
$user->forceFill([
32+
'password' => Hash::make($input['password']),
33+
])->save();
34+
}
35+
}

0 commit comments

Comments
 (0)