project

Run Settings
LanguagePHP
Language Version
Run Command
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('username')->unique(); $table->string('password'); $table->string('phone')->nullable(); $table->text('address'); $table->string('status')->default('inactive'); $table->timestamps(); }); Schema::create('password_reset_tokens', function (Blueprint $table) { $table->string('email')->primary(); $table->string('token'); $table->timestamp('created_at')->nullable(); }); Schema::create('sessions', function (Blueprint $table) { $table->string('id')->primary(); $table->foreignId('user_id')->nullable()->index(); $table->string('ip_address', 45)->nullable(); $table->text('user_agent')->nullable(); $table->longText('payload'); $table->integer('last_activity')->index(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('users'); Schema::dropIfExists('password_reset_tokens'); Schema::dropIfExists('sessions'); } };
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>LOGIN</title> <!-- link css boostrap --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-LN+7fdVzj6u52u30Kp6M/trliBMCMKTyK833zpbD+pXdCLuTusPj697FH4R/5mcr" crossorigin="anonymous"> </head> <body> <!-- login start --> <div class="container d-flex justify-content-center align-items-center flex-column" style="height: 100vh;"> <h2 class="">LOGIN</h2> <div class="col-4 p-4 rounded-3" style="background-color: aqua;"> {{-- tampilkan error validasi / pesan login --}} @if ($errors->any()) <div class="alert alert-danger"> <ul class="mb-0"> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ route('login.process') }}" method="POST"> @csrf <div class="mb-3"> <label for="username" class="form-label">Username</label> <input type="text" name="username" class="form-control" id="username" value="{{ old('username') }}"> </div> <div class="mb-3"> <label for="pwd" class="form-label">Password</label> <input type="password" name="password" class="form-control" id="pwd"> </div> <button type="submit" name="login" class="btn btn-primary">Login</button> </form> </div> </div> <!-- login end --> <!-- link javascript boostrap --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.bundle.min.js" integrity="sha384-ndDqU0Gzau9qJ1lfW4pNLlhNTkCfHzAVBReH9diLvGRem5+R9g2FzA8ZGN954O5Q" crossorigin="anonymous"></script> </body> </html>
public function storeRegister(Request $request) { $request->validate([ 'username' => 'required|min:3|unique:users,username', 'password' => 'required|min:5|confirmed', 'phone' => 'nullable|string', 'address' => 'required|string', 'role_id' => 'required|exists:roles,id', ], [ 'username.unique' => 'Username sudah terdaftar.', 'password.confirmed' => 'Konfirmasi password tidak cocok.', 'username.min' => 'Username minimal 3 karakter.', 'password.min' => 'Password minimal 5 karakter.' ]); User::create([ 'username' => $request->username, 'password' => Hash::make($request->password), 'phone' => $request->phone, 'address' => $request->address, 'role_id' => $request->role_id, ]); return redirect()->route('login.form')->with('success', 'Registrasi berhasil! Silakan login.'); }
<?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable { /** @use HasFactory<\Database\Factories\UserFactory> */ use HasFactory, Notifiable; /** * The attributes that are mass assignable. * * @var list<string> */ protected $fillable = [ 'username', 'password', 'phone', 'address', 'status', 'role_id' ]; /** * The attributes that should be hidden for serialization. * * @var list<string> */ protected $hidden = [ 'password', 'remember_token', ]; public function role() { return $this->belongsTo(Role::class); } /** * Get the attributes that should be cast. * * @return array<string, string> */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; } }
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\AuthController; use App\Http\Controllers\BookController; use App\Http\Controllers\CategoryController; Route::get('/', function () { return view('login'); }); // Halaman login & proses login Route::get('/login', [AuthController::class, 'login'])->name('login.form'); Route::post('/login', [AuthController::class, 'processLogin'])->name('login.process'); Route::get('/register', [AuthController::class, 'showRegister'])->name('register'); Route::post('/register', [AuthController::class, 'storeRegister'])->name('register.store'); // Dashboard Admin & User Route::middleware(['auth'])->group(function () { Route::get('/admin/dashboard', function () { return view('dashboard_admin'); })->name('admin.dashboard'); Route::get('/user/dashboard', function () { return view('dashboard_user'); })->name('user.dashboard'); }); // CRUD untuk Categories Route::resource('categories', CategoryController::class); // CRUD untuk Books Route::resource('books', BookController::class);
public function storeRegister(Request $request) { $request->validate([ 'username' => 'required|min:3|unique:users,username', 'password' => 'required|min:5|confirmed', 'phone' => 'nullable|string', 'address' => 'required|string', 'role_id' => 'required|exists:roles,id', ], [ 'username.unique' => 'Username sudah terdaftar.', 'password.confirmed' => 'Konfirmasi password tidak cocok.', 'username.min' => 'Username minimal 3 karakter.', 'password.min' => 'Password minimal 5 karakter.' ]); User::create([ 'username' => $request->username, 'password' => Hash::make($request->password), 'phone' => $request->phone, 'address' => $request->address, 'role_id' => $request->role_id, ]); return redirect()->route('login.form')->with('success', 'Registrasi berhasil! Silakan login.'); }
Editor Settings
Theme
Key bindings
Full width
Lines