Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions app/Http/Controllers/AuthController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
<?php

namespace App\Http\Controllers;

use App\Models\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Firebase\Auth\Token\Exception\InvalidToken;

class AuthController extends Controller
{
/**
* Registration
*/
public function register(Request $request)
{
$this->validate($request, [
'name' => 'required|min:4',
'email' => 'required|email',
'password' => 'required|min:8',
]);



$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password)
]);

$token = $user->createToken('LaravelAuthApp')->accessToken;

return response()->json(['token' => $token], 200);
}

/**
* Login
*/

public function login(Request $request)
{

// Launch Firebase Auth
$auth = app('firebase.auth');
// Retrieve the Firebase credential's token
$idTokenString = $request->input('Firebasetoken');

try { // Try to verify the firebase credential token with Google
$verifiedToken = $auth->verifyIdToken($idTokenString);
} catch (\InvalidArgumentException $e) { // If the token has the wrong format
return response()->json(
[
'message' => 'Unauthorized - Can\'t parse the token' . $e->getMessage()
],
401
);
}

// Retrieve the UID (User ID) from the verified Firebase credential's token
$uid = $verifiedToken->getClaim('sub');

// Retrieve the user model linked with the Firebase UID
$user = User::where('firebase_uid', $uid)->first();

// Here you could check if the user model exist and if not create it
// For simplicity we will ignore this step

// Once we got a valid user model
// Create a Personnal Access Token
$tokenResult = $user->createToken('Personal Access Token');

// Store the created token
$token = $tokenResult->token;

// Add a expiration date to the token
$token->expires_at = Carbon::now()->addWeeks(1);

// Save the token to the user
$token->save();

return response()->json([
"id" => $user->id,
"access_token" => $tokenResult->accessToken,
"token_type" => "Bearer",
'expires_at' => Carbon::parse($tokenResult->token->expires_at)->toDateTimeString()
]);

// $data = [
// 'email' => $request->email,
// 'password' => $request->password
// ];

// if (auth()->attempt($data)) {
// /** @var \App\Models\User $user **/
// $user = Auth::user();
// $token = $user->createToken('LaravelAuthApp')->accessToken;
// return response()->json(['token' => $token], 200);
// } else {
// return response()->json(['error' => 'Unauthorised'], 401);
// }
}
}
101 changes: 101 additions & 0 deletions app/Http/Controllers/CategoryController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<?php

namespace App\Http\Controllers;

use App\Http\Requests\CategoryStoreRequest;
use App\Http\Resources\ApiResource;
use App\Models\Category;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class CategoryController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return new ApiResource(true, 'Show categories.', Category::get());
}

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(CategoryStoreRequest $request)
{
$input = $request->all();
try {
DB::beginTransaction();
$category = Category::create($input);
DB::commit();
return new ApiResource(true, 'Category has been created', $category);
} catch (\Throwable $e) {
DB::rollBack();
return response()->json(['messages' => 'Something went wrong ' . $e->getMessage()]);
}
}

/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
return new ApiResource(true, 'Show specific category', Category::find($id));
}

/**
* Display products by category
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function productsByCategory($id)
{
$category = Category::with('products')->find($id);
$products = $category->products()->get();
return new ApiResource(true, 'Show products by category', $products);
}

/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$input = $request->all();
try {
DB::beginTransaction();
$category = Category::find($id);
$category->update($input);
DB::commit();
return new ApiResource(true, 'Category has been updated', $category);
} catch (\Throwable $e) {
DB::rollBack();
return response()->json(['messages' => 'Something went wrong ' . $e->getMessage()]);
}
}

/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$category = Category::find($id);
$category->delete();
return new ApiResource(true, 'Category has been deleted.', null);
}
}
63 changes: 63 additions & 0 deletions app/Http/Controllers/CourierController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CourierController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}

/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}

/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}

/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
63 changes: 63 additions & 0 deletions app/Http/Controllers/OrderController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class OrderController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}

/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}

/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}

/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
Loading