- Diposting oleh:
- Diposting pada:
- Kategori:
LKSLKS - Sistem:
Tidak diketahui - Harga:
USD 0 - Dilihat:
1438
Buat Model society
Jika sudah melakukan konfigurasi database dan menginstal Sanctum, langkah selanjutnya adalah membuka terminal di Visual Studio Code Anda dan mengetikkan kode di bawah ini.
php artisan make:model society
Maka Laravel akan membuatkan sebuah model Bernama society. Kemudian masuk kedalam file app/Models/society.php
lalu ketikkan kode dibawah.
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Laravel\Sanctum\HasApiTokens;
use Illuminate\Auth\Authenticatable as AuthenticableTrait;
class society extends Model
{
use HasFactory, HasApiTokens;
protected $table = 'users';
public $hidden = ['password'];
protected $fillable = ['username', 'password', 'last_login_at', 'created_at', 'updated_at', 'deleted_at', 'delete_reason'];
}
Jangan lupa untuk menambahkan Hasapitokens agar sanctum bisa bekerja pada model ini.
Buat Model administrator
Langkah selanjutnya, membuat model administrator. Ketikkan kode di bawah ini pada terminal VS Code.
php artisan make:model administrator
kemudiam masuk kedalam file app/Models/administrator.php
kemudian tambahkan kode dibawah ini.
use Illuminate\Database\Eloquent\Model;
use Laravel\Sanctum\HasApiTokens;
class administrator extends Model
{
use HasFactory, HasApiTokens;
protected $table = 'administrators';
public $timestamps = false;
protected $guarded = [];
}
Jangan lupa untuk menambahkan Hasapitokens agar sanctum bisa bekerja pada model ini.
Authentication
Pertama, buatlah controller dengan nama authController terlebih dahulu. Buka terminal dan ketikkan kode di bawah ini.
php artisan make:controller authController
Lalu masuk ke app/Http/Controllers/authController.php
Sign In
Untuk membuat fungsi signin, ikuti kode di bawah ini dan ketik di dalam class authController.
public function signin(Request $request)
{
try {
$request->validate([
'username' => 'required|min:4|max:60',
'password' => 'required|min:5'
]);
$user = society::where('username', $request->username)->first();
if (!$user) {
$user = administrator::where('username', $request->username)->first();
$user->tokens()->delete();
$token = $user->createToken('auth', ['admin'])->plainTextToken;
return response()->json(['status' => 'success', 'token' => $token], 200);
}
if (!$user || !Hash::check($request->password, $user->password)) {
return response()->json(['status' => 'invalid', 'message' => 'Wrong username or password'], 422);
}
if ($user->username == 'dev1' || $user->username == 'dev2') {
$token = $user->createToken('auth', ['dev'])->plainTextToken;
return response()->json(['status' => 'success', 'token' => $token], 200);
} else {
$token = $user->createToken('auth', ['user'])->plainTextToken;
return response()->json(['status' => 'success', 'token' => $token], 200);
}
} catch (\Throwable $th) {
return response()->json(['status' => 'error', 'message' => $th->getMessage()], 422);
}
}
Kemudian masuk kedalam routes/api.php
lalu ketikkan kode dibawah untuk membuat routing api nya.
Route::post('/v1/auth/signin',[authController::class, 'signin']);
coba kita test, jika berhasil hasilnya seperti ini yaa!
Sign Up
Untuk membuat fungsi signup, ikuti kode di bawah ini dan ketik di dalam class authController.
public function signup(Request $request)
{
try {
$request->validate([
'username' => 'required|unique:users,username|min:4|max:60',
'password' => 'required|min:5|max:10'
]);
$user = new society();
$user->username = $request->username;
$user->password = Hash::make($request->password);
$user->save();
$user->tokens()->delete();
$token = $user->createToken('auth', ['user'])->plainTextToken;
return response()->json(['message' => 'success', 'token' => $token], 200);
} catch (\Throwable $th) {
return response()->json(['status' => 'error', 'message' => $th->getMessage()], 422);
}
}
Kemudian masuk kedalam routes/api.php
lalu ketikkan kode dibawah untuk membuat routing api nya.
Route::post('/v1/auth/signup',[authController::class, 'signup']);
ayo kita test, jika berhasil hasilnya seperti ini yaa!
Sign Out
Untuk membuat fungsi signout, ikuti kode di bawah ini dan ketik di dalam class authController.
public function signout(Request $request)
{
try {
$user = $request->user();
if ($user->currentAccessToken()) {
$user->tokens()->delete();
return response()->json(['status' => 'success']);
}
} catch (\Throwable $th) {
return response()->json(['status' => 'error', 'message' => $th->getMessage()], 422);
}
}
Kemudian masuk kedalam routes/api.php
lalu ketikkan kode dibawah untuk membuat Middleware default sanctum.
Route::middleware('auth:sanctum')->group(function (){
});
Kemudian, tambahkan routing untuk fungsi Sign Out di dalam Middleware-nya.
Route::post('/v1/auth/signout',[authController::class, 'signout']);
Mari kita test, jika berhasil hasilnya akan seperti ini yaa!