Commit 721c63cd authored by Aubin Sava Rausanfiker's avatar Aubin Sava Rausanfiker
Browse files

completing

parent 8eaa8b72
No related merge requests found
Showing with 65918 additions and 1 deletion
+65918 -1
<?php
namespace App\Http\Controllers;
use App\Models\Agama17;
use App\Models\User;
use Illuminate\Http\Request;
class AdminController17 extends Controller
{
public function dashboardPage17()
{
$user = User::where('role', 'user')->get();
$agama = Agama17::all();
return view('dashboard', ['data' => $user, 'agama' => $agama]);
}
public function agamaPage17()
{
$agama = Agama17::all();
return view('agama', ['all_agama' => $agama]);
}
public function editAgamaPage17(Request $request)
{
$id = $request->id;
$agama = Agama17::find($id);
if (!$agama) {
return back()->with('error', 'Agama tidak ditemukan');
}
$all_agama = Agama17::all();
return view('agama', ['all_agama' => $all_agama, 'agama' => $agama]);
}
public function detailPage17(Request $request)
{
$id = $request->id;
$user = User::find($id);
if (!$user) {
return redirect('/dashboard17')->with('error', 'User tidak ditemukan');
}
$agama = Agama17::all();
$detail = $user->detail;
$data = array_merge($user->toArray(), $detail->toArray());
return view('profile', ['user' => $data, 'agama' => $agama, 'is_preview' => true]);
}
public function updateUserStatus17(Request $request)
{
$id = $request->id;
$user = User::find($id);
if (!$user) {
return redirect('/dashboard17')->with('error', 'User tidak ditemukan');
}
$updateStatus = $user->update([
'is_active' => $user->is_active == 1 ? 0 : 1
]);
if ($updateStatus) {
return redirect('/dashboard17')->with('success', 'Status berhasil diubah');
} else {
return redirect('/dashboard17')->with('error', 'Status gagal diubah');
}
}
public function updateUserAgama17(Request $request)
{
$id = $request->id;
$user = User::find($id);
if (!$user) {
return redirect('/dashboard17')->with('error', 'User tidak ditemukan');
}
$request->validate([
'agama' => 'required|exists:agama17,id'
]);
$user->detail->id_agama = $request->agama;
$updateAgama = $user->detail->save();
if ($updateAgama) {
return redirect('/dashboard17')->with('success', 'Agama berhasil diubah');
} else {
return redirect('/dashboard17')->with('error', 'Agama gagal diubah');
}
}
public function deleteAgama17(Request $request)
{
$id = $request->id;
$agama = Agama17::find($id);
if (!$agama) {
return redirect('/agama17')->with('error', 'Agama tidak ditemukan');
}
$deleteAgama = $agama->delete();
if ($deleteAgama) {
return redirect('/agama17')->with('success', 'Agama berhasil dihapus');
} else {
return redirect('/agama17')->with('error', 'Agama gagal dihapus');
}
}
public function updateAgama17(Request $request)
{
$id = $request->id;
$agama = Agama17::find($id);
if (!$agama) {
return redirect('/agama17')->with('error', 'Agama tidak ditemukan');
}
$request->validate([
'nama_agama' => 'required'
]);
$updateAgama = $agama->update([
'nama_agama' => $request->nama_agama
]);
if ($updateAgama) {
return redirect('/agama17')->with('success', 'Agama berhasil diubah');
} else {
return redirect('/agama17')->with('error', 'Agama gagal diubah');
}
}
public function createAgama17(Request $request)
{
$request->validate([
'nama_agama' => 'required'
]);
$createAgama = Agama17::create([
'nama_agama' => $request->nama_agama
]);
if ($createAgama) {
return redirect('/agama17')->with('success', 'Agama berhasil ditambahkan');
} else {
return redirect('/agama17')->with('error', 'Agama gagal ditambahkan');
}
}
}
<?php
namespace App\Http\Controllers;
use App\Models\Detail_data17;
use App\Models\User;
use App\Models\Agama17;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class UsersController17 extends Controller
{
public function profilePage17()
{
$user = Auth::user();
$agama = Agama17::all();
$usersData = User::find($user->id);
$detail = $usersData->detail;
$all_data = array_merge($usersData->toArray(), $detail->toArray());
return view('profile', ['user' => $all_data, 'agama' => $agama, 'is_preview' => false]);
}
public function logoutHandler17()
{
$logout = Auth::logout();
if ($logout) {
return redirect('/login17');
} else {
return back()->with('error', 'Logout gagal');
}
}
public function registerHandler17(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users17',
'password' => 'required|min:8',
'repassword' => 'required|same:password',
'role' => 'required|in:user,admin',
]);
$userData = $request->all();
$userData["password"] = bcrypt($request->password);
$userData["is_active"] = $request["role"] == "user" ? 0 : 1;
$user = new User();
$user->fill($userData);
$save = $user->save();
$detailUser = new Detail_data17();
$detailUser->id_user = $user->id;
$detailUser->save();
if ($save && $detailUser) {
return redirect('/login17')->with('success', 'Register berhasil');
} else {
return back()->with('error', 'Register gagal');
}
}
public function loginHandler17(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required|min:8'
]);
$isLogged = Auth::attempt($request->only('email', 'password'));
if ($isLogged) {
$user = Auth::user();
if ($user->role == "user" && $user->is_active == 1) {
return redirect('/profile17');
}
if ($user->role == "admin") {
return redirect('/dashboard17');
}
if ($user->role == "user" && $user->is_active == 0) {
Auth::logout();
return back()->with('error', 'Akun anda belum di approve oleh admin');
}
}
return back()->with('error', 'Username atau password salah');
}
public function uploadPhotoKTP17()
{
$user = Auth::user();
$detail = User::find($user->id)->detail;
if ($detail->foto_ktp != "foto_ktp.png") {
if (file_exists(public_path('photo/' . $detail->foto_ktp))) {
unlink(public_path('photo/' . $detail->foto_ktp));
}
}
$file = request()->file('photoKTP');
$fileName = time() . '.' . $file->getClientOriginalExtension();
$file->move(public_path('photo/'), $fileName);
$detail->foto_ktp = $fileName;
$savePhoto = $detail->save();
if ($savePhoto) {
return back()->with('success', 'Upload foto ktp berhasil');
} else {
return back()->with('error', 'Upload foto ktp gagal');
}
}
public function uploadPhotoProfil17()
{
$user = Auth::user();
$detail = User::find($user->id);
if ($detail->foto != "foto.png") {
if (file_exists(public_path('photo/' . $detail->foto))) {
unlink(public_path('photo/' . $detail->foto));
}
}
$file = request()->file('photoProfil');
$fileName = time() . '.' . $file->getClientOriginalExtension();
$file->move(public_path('photo/'), $fileName);
$detail->foto = $fileName;
$savePhoto = $detail->save();
if ($savePhoto) {
return back()->with('success', 'Upload foto profil berhasil');
} else {
return back()->with('error', 'Upload foto profil gagal');
}
}
public function updateProfil17(Request $request)
{
$user = Auth::user();
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users17,email,' . $user->id,
'alamat' => 'required',
'tempat_lahir' => 'required',
'tanggal_lahir' => 'required',
'id_agama' => 'required',
]);
$userData = User::find($user->id);
$detail = User::find($user->id)->detail;
$isAgamaValid = Agama17::find($request->id_agama);
if (!$isAgamaValid) {
return back()->with('error', 'Agama tidak valid');
}
$userData->name = $request->name;
$userData->email = $request->email;
$saveUser = $userData->save();
$detail->alamat = $request->alamat;
$detail->tempat_lahir = $request->tempat_lahir;
$detail->tanggal_lahir = $request->tanggal_lahir;
$detail->id_agama = $request->id_agama;
$detail->umur = date_diff(date_create($request->tanggal_lahir), date_create('now'))->y;
$saveDetail = $detail->save();
if ($saveUser && $saveDetail) {
return back()->with('success', 'Update profile berhasil');
} else {
return back()->with('error', 'Update profile gagal');
}
}
public function editPasswordPage17()
{
return view('editPassword');
}
public function updatePassword17(Request $request)
{
$user = Auth::user();
$request->validate([
'old_password' => 'required|min:8',
'password' => 'required|min:8',
'repassword' => 'required|same:password',
]);
$userData = User::find($user->id);
if (!Hash::check($request->old_password, $userData->password)) {
return back()->with('error', 'Password lama tidak sesuai');
}
$userData->password = bcrypt($request->password);
$saveUser = $userData->save();
if ($saveUser) {
return back()->with('success', 'Update password berhasil');
} else {
return back()->with('error', 'Update password gagal');
}
}
}
......@@ -63,5 +63,9 @@ class Kernel extends HttpKernel
'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'isUser' => \App\Http\Middleware\isUser::class,
'isAdmin' => \App\Http\Middleware\isAdmin::class,
'isNotLogged' => \App\Http\Middleware\isNotLogged::class,
'isLogged' => \App\Http\Middleware\isLogged::class,
];
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class isAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if ($request->user() != null) {
if ($request->user()->role == 'admin') {
return $next($request);
}
if ($request->user()->role == 'user') {
return redirect('/profile17');
}
}
return redirect('/login17');
}
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class isLogged
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if (Auth::check()) {
return $next($request);
} else {
return redirect('/login17');
}
}
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class isNotLogged
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if ($request->user() != null) {
if ($request->user()->role == 'user') {
return redirect('/profile17');
}
if ($request->user()->role == 'admin') {
return redirect('/dashboard17');
}
}
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class isUser
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if ($request->user() != null) {
if ($request->user()->role == 'user') {
return $next($request);
}
if ($request->user()->role == 'admin') {
return redirect('/dashboard17');
}
}
return redirect('/login17');
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Agama17 extends Model
{
use HasFactory;
public $table = 'agama17';
protected $primaryKey = 'id';
protected $fillable = [
'nama_agama'
];
public function detail()
{
return $this->hasMany(Detail_data17::class, 'id_agama', 'id');
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Detail_data17 extends Model
{
use HasFactory;
public $table = 'detail_data17';
protected $primaryKey = 'id';
protected $fillable = [
'id_user',
'alamat',
'tempat_lahir',
'tanggal_lahir',
'id_agama',
'foto_ktp',
'umur'
];
public function user()
{
return $this->belongsTo(User17::class, 'id_user', 'id');
}
public function agama()
{
return $this->belongsTo(Agama17::class, 'id_agama', 'id');
}
}
......@@ -12,6 +12,9 @@ class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
public $table = 'users17';
protected $primaryKey = 'id';
/**
* The attributes that are mass assignable.
*
......@@ -21,6 +24,9 @@ class User extends Authenticatable
'name',
'email',
'password',
'role',
'is_active',
'foto'
];
/**
......@@ -41,4 +47,9 @@ class User extends Authenticatable
protected $casts = [
'email_verified_at' => 'datetime',
];
public function detail()
{
return $this->hasOne(Detail_data17::class, 'id_user', 'id');
}
}
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Model>
*/
class AgamaFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition()
{
return [
//
];
}
}
......@@ -13,7 +13,7 @@ return new class extends Migration
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
Schema::create('users17', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
......@@ -21,6 +21,9 @@ return new class extends Migration
$table->string('password');
$table->rememberToken();
$table->timestamps();
$table->enum('role', ['admin', 'user'])->default('user');
$table->boolean('is_active');
$table->string('foto')->default('foto.png');
});
}
......
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('agama17', function (Blueprint $table) {
$table->id();
$table->string('nama_agama');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('agama');
}
};
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('detail_data17', function (Blueprint $table) {
$table->id();
$table->foreignId('id_user');
$table->string('alamat')->nullable();
$table->string('tempat_lahir')->nullable();
$table->date('tanggal_lahir')->nullable();
$table->foreignId('id_agama')->default(1);
$table->string('foto_ktp')->default('foto_ktp.png');
$table->integer('umur')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('detail_data');
}
};
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class Agama extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('agama17')->insert([
['nama_agama' => 'Islam'],
['nama_agama' => 'Kristen'],
['nama_agama' => 'Hindu'],
['nama_agama' => 'Budha'],
['nama_agama' => 'Konghucu'],
]);
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment