Skip to content

Commit c4e877a

Browse files
author
osayomwanm
committed
All the API routes, models, and controllers for the blog have been settled and tested on postman
0 parents  commit c4e877a

File tree

101 files changed

+12032
-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

+12032
-0
lines changed

.editorconfig

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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
16+
17+
[docker-compose.yml]
18+
indent_size = 4

.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://localhost
6+
7+
LOG_CHANNEL=stack
8+
LOG_DEPRECATIONS_CHANNEL=null
9+
LOG_LEVEL=debug
10+
11+
DB_CONNECTION=mysql
12+
DB_HOST=127.0.0.1
13+
DB_PORT=3306
14+
DB_DATABASE=laravel
15+
DB_USERNAME=root
16+
DB_PASSWORD=
17+
18+
BROADCAST_DRIVER=log
19+
CACHE_DRIVER=file
20+
FILESYSTEM_DRIVER=local
21+
QUEUE_CONNECTION=sync
22+
SESSION_DRIVER=file
23+
SESSION_LIFETIME=120
24+
25+
MEMCACHED_HOST=127.0.0.1
26+
27+
REDIS_HOST=127.0.0.1
28+
REDIS_PASSWORD=null
29+
REDIS_PORT=6379
30+
31+
MAIL_MAILER=smtp
32+
MAIL_HOST=mailhog
33+
MAIL_PORT=1025
34+
MAIL_USERNAME=null
35+
MAIL_PASSWORD=null
36+
MAIL_ENCRYPTION=null
37+
MAIL_FROM_ADDRESS=null
38+
MAIL_FROM_NAME="${APP_NAME}"
39+
40+
AWS_ACCESS_KEY_ID=
41+
AWS_SECRET_ACCESS_KEY=
42+
AWS_DEFAULT_REGION=us-east-1
43+
AWS_BUCKET=
44+
AWS_USE_PATH_STYLE_ENDPOINT=false
45+
46+
PUSHER_APP_ID=
47+
PUSHER_APP_KEY=
48+
PUSHER_APP_SECRET=
49+
PUSHER_APP_CLUSTER=mt1
50+
51+
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
52+
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

.gitattributes

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
* text=auto
2+
3+
*.blade.php diff=html
4+
*.css diff=css
5+
*.html diff=html
6+
*.md diff=markdown
7+
*.php diff=php
8+
9+
/.github export-ignore
10+
CHANGELOG.md export-ignore

.gitignore

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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
14+
/.idea
15+
/.vscode

.styleci.yml

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

README.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
2+
# laravel-API-flutter-blog-forum-app
3+
A laravel 8 rest api project for blog and forum application.
4+
5+
## Get Started
6+
7+
- clone or fork the repo
8+
- copy .env.exmaple file `copy .env.example .env`
9+
- generate app key `php artisan key:generate`
10+
- add database credentials
11+
- install dependencies `composer install`
12+
- link storage `php artisan storage:link`
13+
- run migration `php artisan migrate`
14+
15+
Running on a specific ip `php artisan serv --host <YOUR_IP> --port <YOUR_PORT>`
16+
17+
A flutter for this api will soon be out, and you will get it [Here](https://github.com/miramud)
18+
19+
<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>
20+
21+
<p align="center">
22+
<a href="https://travis-ci.org/laravel/framework"><img src="https://travis-ci.org/laravel/framework.svg" alt="Build Status"></a>
23+
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
24+
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
25+
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
26+
</p>
27+
28+
## About Laravel
29+
30+
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
31+
32+
- [Simple, fast routing engine](https://laravel.com/docs/routing).
33+
- [Powerful dependency injection container](https://laravel.com/docs/container).
34+
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
35+
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
36+
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
37+
- [Robust background job processing](https://laravel.com/docs/queues).
38+
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
39+
40+
Laravel is accessible, powerful, and provides tools required for large, robust applications.
41+
42+
## Learning Laravel
43+
44+
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
45+
46+
If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 1500 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
47+
48+
## Laravel Sponsors
49+
50+
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell).
51+
52+
### Premium Partners
53+
54+
- **[Vehikl](https://vehikl.com/)**
55+
- **[Tighten Co.](https://tighten.co)**
56+
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
57+
- **[64 Robots](https://64robots.com)**
58+
- **[Cubet Techno Labs](https://cubettech.com)**
59+
- **[Cyber-Duck](https://cyber-duck.co.uk)**
60+
- **[Many](https://www.many.co.uk)**
61+
- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)**
62+
- **[DevSquad](https://devsquad.com)**
63+
- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
64+
- **[OP.GG](https://op.gg)**
65+
- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)**
66+
- **[Lendio](https://lendio.com)**
67+
68+
## Contributing
69+
70+
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
71+
72+
## Code of Conduct
73+
74+
In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
75+
76+
## Security Vulnerabilities
77+
78+
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [[email protected]](mailto:[email protected]). All security vulnerabilities will be promptly addressed.
79+
80+
## License
81+
82+
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).

app/Console/Kernel.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace App\Console;
4+
5+
use Illuminate\Console\Scheduling\Schedule;
6+
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
7+
8+
class Kernel extends ConsoleKernel
9+
{
10+
/**
11+
* Define the application's command schedule.
12+
*
13+
* @param \Illuminate\Console\Scheduling\Schedule $schedule
14+
* @return void
15+
*/
16+
protected function schedule(Schedule $schedule)
17+
{
18+
// $schedule->command('inspire')->hourly();
19+
}
20+
21+
/**
22+
* Register the commands for the application.
23+
*
24+
* @return void
25+
*/
26+
protected function commands()
27+
{
28+
$this->load(__DIR__.'/Commands');
29+
30+
require base_path('routes/console.php');
31+
}
32+
}

app/Exceptions/Handler.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
namespace App\Exceptions;
4+
5+
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
6+
use Throwable;
7+
8+
class Handler extends ExceptionHandler
9+
{
10+
/**
11+
* A list of the exception types that are not reported.
12+
*
13+
* @var array<int, class-string<Throwable>>
14+
*/
15+
protected $dontReport = [
16+
//
17+
];
18+
19+
/**
20+
* A list of the inputs that are never flashed for validation exceptions.
21+
*
22+
* @var array<int, string>
23+
*/
24+
protected $dontFlash = [
25+
'current_password',
26+
'password',
27+
'password_confirmation',
28+
];
29+
30+
/**
31+
* Register the exception handling callbacks for the application.
32+
*
33+
* @return void
34+
*/
35+
public function register()
36+
{
37+
$this->reportable(function (Throwable $e) {
38+
//
39+
});
40+
}
41+
}
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
<?php
2+
3+
namespace App\Http\Controllers;
4+
5+
use Illuminate\Http\Request;
6+
use Illuminate\Support\Facades\Auth;
7+
use App\Models\User;
8+
use App\Models\Comment;
9+
use App\Models\Post;
10+
11+
class AuthController extends Controller
12+
{
13+
//REGISTER USER
14+
public function register(Request $request){
15+
// vallidate fields
16+
$attr = $request->validate([
17+
'name' => 'required|string',
18+
'email' => 'required|email|unique:users,email',
19+
'username' => 'required|string|unique:users,username',
20+
'password' => 'required|min:6|confirmed'
21+
]);
22+
23+
// create user
24+
$user = User::create([
25+
'name' => $attr['name'],
26+
'email' => $attr['email'],
27+
'username' => $attr['username'],
28+
'password' => bcrypt($attr['password'])
29+
]);
30+
31+
// return user and token
32+
return response([
33+
'user' => $user,
34+
'token' => $user->createToken('secret')->plainTextToken
35+
]);
36+
}
37+
38+
// LOGIN USER
39+
public function login(Request $request) {
40+
41+
if(auth()->attempt(['email' => $request->email, 'password' => $request->password]))
42+
{
43+
44+
$user = Auth::user();
45+
$success['token'] = $request->user()->createToken('secret')->plainTextToken;
46+
47+
// return response()->json(['success' => $success], $this->successStatus);
48+
// return user and token
49+
return response([
50+
'user' => auth()->user(),
51+
'token' => $request->user()->createToken('secret')->plainTextToken
52+
]);
53+
54+
}
55+
// return response()->json(['error'=>'Unauthorised'], 401);
56+
return response(['messsage'=> 'Invalid credentials'], 403);
57+
}
58+
59+
// LOGOUT USER
60+
public function logout(Request $request, User $user){
61+
$request->user()->tokens()->delete();
62+
return response(['message' => 'Logged out successfully'], 200);
63+
}
64+
65+
// GET USER DETAILS
66+
public function user(){
67+
return response([
68+
'user' => auth()->user()
69+
], 200);
70+
}
71+
72+
// update user
73+
public function update(Request $request) {
74+
$user = User::find(auth()->user()->id);
75+
76+
$attrs = $request->validate([
77+
'name' => auth()->user()->name,
78+
]);
79+
80+
$image = $this->saveImage($request->image, 'profiles');
81+
82+
$user->update([
83+
'name' => $attrs['name'],
84+
'image' => $image
85+
]);
86+
87+
return response([
88+
'message' => 'User updated.',
89+
'user' => auth()->user()
90+
], 200);
91+
}
92+
93+
//delete post
94+
public function deleteUser($id)
95+
{
96+
$user = User::find($id);
97+
98+
if(!$user)
99+
{
100+
return response([
101+
'message' => 'User not found.'
102+
], 403);
103+
}
104+
105+
if($user->id != auth()->user()->id)
106+
{
107+
return response([
108+
'message' => 'Permission denied.'
109+
], 403);
110+
}
111+
112+
$user->comment()->delete();
113+
// // $user->forums()->delete();
114+
$user->post()->delete();
115+
// $user->tokens()->delete();
116+
// $user->delete();
117+
118+
return response([
119+
'message' => 'User deleted.'
120+
], 200);
121+
}
122+
123+
}

0 commit comments

Comments
 (0)