Pembahasan Soal LKS Web Technologies Module-Server

  • 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!

lks web technology

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!

lks web technology

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!

lks web technology

Rating

0

( 0 Votes )
Silahkan Rating!
Pembahasan Soal LKS Web Technologies Module-Server

No votes so far! Be the first to rate this post.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *