Initial commit

This commit is contained in:
Ryan Maulana 2026-04-17 16:38:15 +07:00
commit 6e38997e6d
4664 changed files with 690788 additions and 0 deletions

18
.editorconfig Normal file
View File

@ -0,0 +1,18 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
[docker-compose.yml]
indent_size = 4

64
.env.example Normal file
View File

@ -0,0 +1,64 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=laravel
# DB_USERNAME=root
# DB_PASSWORD=
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

11
.gitattributes vendored Normal file
View File

@ -0,0 +1,11 @@
* text=auto eol=lf
*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php
/.github export-ignore
CHANGELOG.md export-ignore
.styleci.yml export-ignore

19
.gitignore vendored Normal file
View File

@ -0,0 +1,19 @@
/.phpunit.cache
/node_modules
/public/build
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.env.production
.phpunit.result.cache
Homestead.json
Homestead.yaml
auth.json
npm-debug.log
yarn-error.log
/.fleet
/.idea
/.vscode

View File

@ -0,0 +1,64 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=ISI_TOKEN_KAMU_DISINI
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=gGaFJXn41pcCRvRDPyyq
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=chpBEnbbsP7BEZQnZ6jj
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=chpBEnbbsP7BEZQnZ6jj
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=EMAIL_KAMU
MAIL_PASSWORD=APP_PASSWORD_GMAIL
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=EMAIL_KAMU
MAIL_FROM_NAME="Green View"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=chpBEnbbsP7BEZQnZ6jj
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mlnryan05@gmail.com
MAIL_PASSWORD=APP_PASSWORD_GMAIL
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=EMAIL_KAMU
MAIL_FROM_NAME="Green View"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=chpBEnbbsP7BEZQnZ6jj
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mlnryan05@gmail.com
MAIL_PASSWORD=APP_PASSWORD_GMAIL
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=mlnryan05@gmail.com
MAIL_FROM_NAME="Green View"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=chpBEnbbsP7BEZQnZ6jj
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mlnryan05@gmail.com
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=mlnryan05@gmail.com
MAIL_FROM_NAME="Green View"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=chpBEnbbsP7BEZQnZ6jj
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mlnryan05@gmail.com
MAIL_PASSWORD=qnte zkku hlrg nxzs
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=mlnryan05@gmail.com
MAIL_FROM_NAME="Green View"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=chpBEnbbsP7BEZQnZ6jj
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mlnryan05@gmail.com
MAIL_PASSWORD=qntezkku hlrg nxzs
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=mlnryan05@gmail.com
MAIL_FROM_NAME="Green View"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=chpBEnbbsP7BEZQnZ6jj
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mlnryan05@gmail.com
MAIL_PASSWORD=qntezkkuhlrg nxzs
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=mlnryan05@gmail.com
MAIL_FROM_NAME="Green View"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=chpBEnbbsP7BEZQnZ6jj
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mlnryan05@gmail.com
MAIL_PASSWORD=qntezkkuhlrgnxzs
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=mlnryan05@gmail.com
MAIL_FROM_NAME="Green View"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,66 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:VGjxoHXnll7wWiXgXTzgWYAFLsyenxO+NwqA4c4Tu6k=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=greenview
DB_USERNAME=root
DB_PASSWORD=
FONNTE_TOKEN=chpBEnbbsP7BEZQnZ6jj
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mlnryan05@gmail.com
MAIL_PASSWORD=qntezkkuhlrgnxzs
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=mlnryan05@gmail.com
MAIL_FROM_NAME="Green View"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"

View File

@ -0,0 +1,11 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class UserController extends Controller
{
//
}

View File

@ -0,0 +1,15 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = \App\Models\User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
}

View File

@ -0,0 +1,44 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = \App\Models\User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
}

View File

@ -0,0 +1,45 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = \App\Models\User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
Route::delete('/admin/user/delete/{id}', [UserController::class, 'destroy'])->name('admin.user.delete');
}

View File

@ -0,0 +1,45 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = \App\Models\User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
}

View File

@ -0,0 +1,45 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = \App\Models\User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
Route::delete('/admin/user/delete/{id}', [UserController::class, 'destroy'])->name('admin.user.delete');
}

View File

@ -0,0 +1,45 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = \App\Models\User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
}

View File

@ -0,0 +1,51 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = \App\Models\User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
public function destroy($id)
{
$user = \App\Models\User::findOrFail($id);
$user->delete();
return redirect()->route('admin.user.index')->with('success', 'User berhasil dihapus');
}
}

View File

@ -0,0 +1,51 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$user = User::all();
return view('admin.user.index', compact('user'));
}
// 🔥 FORM EDIT
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('admin.user.edit', compact('user'));
}
// 🔥 UPDATE DATA
public function update(Request $request, $id)
{
$user = \App\Models\User::findOrFail($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'role' => 'required'
]);
$user->update([
'name' => $request->name,
'email' => $request->email,
'role' => $request->role,
]);
return redirect()->route('admin.user.index')->with('success', 'Data berhasil diupdate');
}
public function destroy($id)
{
$user = \App\Models\User::findOrFail($id);
$user->delete();
return redirect()->route('admin.user.index')->with('success', 'User berhasil dihapus');
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AuthController extends Controller
{
//
}

View File

@ -0,0 +1,77 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required'
]);
if (Auth::attempt($request->only('email', 'password'))) {
$request->session()->regenerate();
// CEK ROLE
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/penghuni/dashboard');
}
}
return back()->with('error', 'Email atau password salah!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'penghuni' // default user
]);
return redirect('/login')->with('success', 'Registrasi berhasil, silakan login');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,83 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required', // bisa email / username
'password' => 'required'
]);
$login = $request->login;
// cek login pakai email atau username
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/penghuni/dashboard');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
User::create([
'name' => $request->name,
'username' => $request->username,
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'penghuni'
]);
return redirect('/login')->with('success', 'Register berhasil!');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,82 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/penghuni/dashboard');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
User::create([
'name' => $request->name,
'username' => $request->username,
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'penghuni'
]);
return redirect('/login')->with('success', 'Register berhasil!');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,82 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/penghuni/dashboard');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
User::create([
'name' => $request->name,
'username' => $request->username,
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'penghuni'
]);
return redirect('/login')->with('success', 'Register berhasil!');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/penghuni/dashboard');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'penghuni'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/penghuni/dashboard');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'penghuni'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/user/dashboard');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'penghuni'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/user/home');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'penghuni'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/user/home');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/user');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/user/home');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
if (Auth::user()->role == 'admin') {
return redirect('/admin/dashboard');
} else {
return redirect('/user');
}
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,92 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/iuran');
}
return redirect('/user/home');
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,92 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/iuran');
}
return redirect('/user/home');
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,96 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/iuran');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,96 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/iuran');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,96 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/das');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,96 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}

View File

@ -0,0 +1,101 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function lupaPassword()
{
return view('auth.lupa-password');
}
}

View File

@ -0,0 +1,101 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function lupaPassword()
{
return view('auth.lupa-password');
}
}

View File

@ -0,0 +1,120 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function lupaPassword()
{
return view('auth.lupa-password');
}
use Illuminate\Support\Facades\Mail;
public function kirimOtp(Request $request)
{
$request->validate([
'email' => 'required|email|exists:users,email'
]);
$user = User::where('email', $request->email)->first();
$otp = rand(100000, 999999);
$user->update([
'otp' => $otp,
'otp_expired_at' => now()->addMinutes(5)
]);
// K
}

View File

@ -0,0 +1,103 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function lupaPassword()
{
return view('auth.lupa-password');
}
}

View File

@ -0,0 +1,120 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function lupaPassword()
{
return view('auth.lupa-password');
}
use Illuminate\Support\Facades\Mail;
public function kirimOtp(Request $request)
{
$request->validate([
'email' => 'required|email|exists:users,email'
]);
$user = User::where('email', $request->email)->first();
$otp = rand(100000, 999999);
$user->update([
'otp' => $otp,
'otp_expired_at' => now()->addMinutes(5)
]);
// K
}

View File

@ -0,0 +1,103 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function lupaPassword()
{
return view('auth.lupa-password');
}
}

View File

@ -0,0 +1,104 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function lupaPassword()
{
return view('auth.lupa-password');
}
}

View File

@ -0,0 +1,106 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function lupaPassword()
{
return view('auth.lupa-password');
}
}

View File

@ -0,0 +1,106 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
}

View File

@ -0,0 +1,106 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
}

View File

@ -0,0 +1,131 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
}

View File

@ -0,0 +1,131 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
}

View File

@ -0,0 +1,129 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
}

View File

@ -0,0 +1,134 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
}

View File

@ -0,0 +1,134 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
}

View File

@ -0,0 +1,157 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
}

View File

@ -0,0 +1,157 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
}

View File

@ -0,0 +1,162 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
}

View File

@ -0,0 +1,162 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
}

View File

@ -0,0 +1,182 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
public function resetPassword(Request $request)
{
$request->validate([
'password' => 'required|min:6|confirmed'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
$user->password = Hash::make($request->password);
$user->otp_code = null;
$user->otp_expired = null;
$user->save();
return redirect('/login')->with('success', 'Password berhasil direset');
}
}

View File

@ -0,0 +1,182 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
public function resetPassword(Request $request)
{
$request->validate([
'password' => 'required|min:6|confirmed'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
$user->password = Hash::make($request->password);
$user->otp_code = null;
$user->otp_expired = null;
$user->save();
return redirect('/login')->with('success', 'Password berhasil direset');
}
}

View File

@ -0,0 +1,182 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->emails)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
public function resetPassword(Request $request)
{
$request->validate([
'password' => 'required|min:6|confirmed'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
$user->password = Hash::make($request->password);
$user->otp_code = null;
$user->otp_expired = null;
$user->save();
return redirect('/login')->with('success', 'Password berhasil direset');
}
}

View File

@ -0,0 +1,182 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->emails)->send(new OtpMail($otp));
session(['reset_email' => $user->emails]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
public function resetPassword(Request $request)
{
$request->validate([
'password' => 'required|min:6|confirmed'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
$user->password = Hash::make($request->password);
$user->otp_code = null;
$user->otp_expired = null;
$user->save();
return redirect('/login')->with('success', 'Password berhasil direset');
}
}

View File

@ -0,0 +1,182 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
public function resetPassword(Request $request)
{
$request->validate([
'password' => 'required|min:6|confirmed'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
$user->password = Hash::make($request->password);
$user->otp_code = null;
$user->otp_expired = null;
$user->save();
return redirect('/login')->with('success', 'Password berhasil direset');
}
}

View File

@ -0,0 +1,182 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->emails)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
public function resetPassword(Request $request)
{
$request->validate([
'password' => 'required|min:6|confirmed'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
$user->password = Hash::make($request->password);
$user->otp_code = null;
$user->otp_expired = null;
$user->save();
return redirect('/login')->with('success', 'Password berhasil direset');
}
}

View File

@ -0,0 +1,182 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
public function resetPassword(Request $request)
{
$request->validate([
'password' => 'required|min:6|confirmed'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
$user->password = Hash::make($request->password);
$user->otp_code = null;
$user->otp_expired = null;
$user->save();
return redirect('/login')->with('success', 'Password berhasil direset');
}
}

View File

@ -0,0 +1,189 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
try {
Mail::to($user->email)->send(new OtpMail($otp));
} catch (\Exception $e) {
dd($e->getMessage()); // 🔥 tampilkan error asli
}
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
public function resetPassword(Request $request)
{
$request->validate([
'password' => 'required|min:6|confirmed'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
$user->password = Hash::make($request->password);
$user->otp_code = null;
$user->otp_expired = null;
$user->save();
return redirect('/login')->with('success', 'Password berhasil direset');
}
}

View File

@ -0,0 +1,189 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
try {
Mail::to($user->email)->send(new OtpMail($otp));
} catch (\Exception $e) {
dd($e->getMessage()); // 🔥 tampilkan error asli
}
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
public function resetPassword(Request $request)
{
$request->validate([
'password' => 'required|min:6|confirmed'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
$user->password = Hash::make($request->password);
$user->otp_code = null;
$user->otp_expired = null;
$user->save();
return redirect('/login')->with('success', 'Password berhasil direset');
}
}

View File

@ -0,0 +1,182 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use App\Mail\OtpMail;
use Carbon\Carbon;
class AuthController extends Controller
{
// ================= LOGIN =================
public function login()
{
return view('auth.login');
}
public function prosesLogin(Request $request)
{
$request->validate([
'login' => 'required',
'password' => 'required'
]);
$login = $request->login;
$field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
$request->session()->regenerate();
$user = Auth::user();
if ($user->role == 'admin') {
return redirect('/admin/dashboard');
}
if ($user->role == 'rt') {
return redirect('/rt/dashboard');
}
return match($user->role) {
'admin' => redirect('/admin/dashboard'),
'rt' => redirect('/rt/iuran'),
default => redirect('/user/home'),
};
}
return back()->with('error', 'Login gagal!');
}
// ================= REGISTER =================
public function register()
{
return view('auth.register');
}
public function prosesRegister(Request $request)
{
// VALIDASI
$request->validate([
'name' => 'required',
'username' => 'required|unique:users,username',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6',
]);
// DEBUG (WAJIB COBA)
// dd($request->all());
User::create([
'name' => $request->name,
'username' => $request->username, // 🔥 INI WAJIB ADA
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'user'
]);
return redirect('/login')->with('success', 'Register berhasil');
}
// ================= LOGOUT =================
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function forgotForm()
{
return view('auth.forgot');
}
public function sendOtp(Request $request)
{
$request->validate([
'email' => 'required|email'
]);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->with('error', 'Email tidak ditemukan');
}
$otp = rand(100000, 999999);
$user->otp_code = $otp;
$user->otp_expired = now()->addMinutes(5);
$user->save();
Mail::to($user->email)->send(new OtpMail($otp));
session(['reset_email' => $user->email]);
return redirect()->route('password.otp')->with('success', 'OTP dikirim ke email');
}
public function otpForm()
{
return view('auth.otp');
}
public function verifyOtp(Request $request)
{
$request->validate([
'otp' => 'required'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
if ($user->otp_code != $request->otp) {
return back()->with('error', 'OTP salah');
}
if (Carbon::now()->gt($user->otp_expired)) {
return back()->with('error', 'OTP expired');
}
return redirect()->route('password.reset');
}
public function resetForm()
{
return view('auth.reset');
}
public function resetPassword(Request $request)
{
$request->validate([
'password' => 'required|min:6|confirmed'
]);
$user = User::where('email', session('reset_email'))->first();
if (!$user) {
return redirect()->route('password.forgot');
}
$user->password = Hash::make($request->password);
$user->otp_code = null;
$user->otp_expired = null;
$user->save();
return redirect('/login')->with('success', 'Password berhasil direset');
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
//
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
return view('admin.informasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
return view('.informasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
return view('informasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
return view('admin.informasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
return view('informasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
return view('admin.informasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,4 @@
public function index()
{
dd(view()->exists('admin.informasi.index'));
}

View File

@ -0,0 +1,4 @@
public function index()
{
dd(view()->exists('admin.informasi.index'));
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
return view('admin.informasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
dd(view()->exists('admin.informasi.index'));
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
return view('adminformasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
return view('admininformasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class InformasiController extends Controller
{
public function index()
{
return view('admin.informasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Informasi;
class InformasiController extends Controller
{
public function index()
{
return view('admin.informasi.index');
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
// nanti simpan ke database
return redirect()->route('informasi.index');
}
}

View File

@ -0,0 +1,92 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Informasi;
class InformasiController extends Controller
{
public function index()
{
$informasi = Informasi::latest()->get();
return view('admin.informasi.index', compact('informasi'));
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
'gambar' => 'nullable|image|mimes:jpg,png,jpeg|max:2048'
]);
$gambar = null;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
Informasi::create([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'penulis' => auth()->user()->name,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil ditambahkan');
}
public function edit($id)
{
$data = Informasi::findOrFail($id);
return view('admin.informasi.edit', compact('data'));
}
public function update(Request $request, $id)
{
$data = Informasi::findOrFail($id);
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
]);
$gambar = $data->gambar;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
$data->update([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil diupdate');
}
public function destroy($id)
{
Informasi::findOrFail($id)->delete();
return back()->with('success', 'Berhasil dihapus');
}
}

View File

@ -0,0 +1,92 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Informasi;
class InformasiController extends Controller
{
public function index()
{
$informasi = Informasi::latest()->get();
return view('admin.informasi.index', compact('informasi'));
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
'gambar' => 'nullable|image|mimes:jpg,png,jpeg|max:2048'
]);
$gambar = null;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
Informasi::create([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'penulis' => auth()->user()->name,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil ditambahkan');
}
public function edit($id)
{
$data = Informasi::findOrFail($id);
return view('admin.informasi.edit', compact('data'));
}
public function update(Request $request, $id)
{
$data = Informasi::findOrFail($id);
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
]);
$gambar = $data->gambar;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
$data->update([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil diupdate');
}
public function destroy($id)
{
Informasi::findOrFail($id)->delete();
return back()->with('success', 'Berhasil dihapus');
}
}

View File

@ -0,0 +1,92 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Informasi;
class InformasiController extends Controller
{
public function index()
{
$informasi = Informasi::latest()->get();
return view('admin.informasi.index', compact('informasi'));
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
'gambar' => 'nullable|image|mimes:jpg,png,jpeg|max:2048'
]);
$gambar = null;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
Informasi::create([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'penulis' => auth()->user()->name,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil ditambahkan');
}
public function edit($id)
{
$data = Informasi::findOrFail($id);
return view('admin.informasi.edit', compact('data'));
}
public function update(Request $request, $id)
{
$data = Informasi::findOrFail($id);
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
]);
$gambar = $data->gambar;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
$data->update([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil diupdate');
}
public function destroy($id)
{
Informasi::findOrFail($id)->delete();
return back()->with('success', 'Berhasil dihapus');
}
}

View File

@ -0,0 +1,93 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Informasi;
use
class InformasiController extends Controller
{
public function index()
{
$informasi = Informasi::latest()->get();
return view('admin.informasi.index', compact('informasi'));
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
'gambar' => 'nullable|image|mimes:jpg,png,jpeg|max:2048'
]);
$gambar = null;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
Informasi::create([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'penulis' => auth()->user()->name,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil ditambahkan');
}
public function edit($id)
{
$data = Informasi::findOrFail($id);
return view('admin.informasi.edit', compact('data'));
}
public function update(Request $request, $id)
{
$data = Informasi::findOrFail($id);
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
]);
$gambar = $data->gambar;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
$data->update([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil diupdate');
}
public function destroy($id)
{
Informasi::findOrFail($id)->delete();
return back()->with('success', 'Berhasil dihapus');
}
}

View File

@ -0,0 +1,93 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Informasi;
use Illuminate\Support\Facades\Auth;
class InformasiController extends Controller
{
public function index()
{
$informasi = Informasi::latest()->get();
return view('admin.informasi.index', compact('informasi'));
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
'gambar' => 'nullable|image|mimes:jpg,png,jpeg|max:2048'
]);
$gambar = null;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
Informasi::create([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'penulis' => auth()->user()->name,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil ditambahkan');
}
public function edit($id)
{
$data = Informasi::findOrFail($id);
return view('admin.informasi.edit', compact('data'));
}
public function update(Request $request, $id)
{
$data = Informasi::findOrFail($id);
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
]);
$gambar = $data->gambar;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
$data->update([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil diupdate');
}
public function destroy($id)
{
Informasi::findOrFail($id)->delete();
return back()->with('success', 'Berhasil dihapus');
}
}

View File

@ -0,0 +1,93 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Informasi;
use Illuminate\Support\Facades\Auth;
class InformasiController extends Controller
{
public function index()
{
$informasi = Informasi::latest()->get();
return view('admin.informasi.index', compact('informasi'));
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
'gambar' => 'nullable|image|mimes:jpg,png,jpeg|max:2048'
]);
$gambar = null;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
Informasi::create([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'penulis' => Auth::user()->name,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil ditambahkan');
}
public function edit($id)
{
$data = Informasi::findOrFail($id);
return view('admin.informasi.edit', compact('data'));
}
public function update(Request $request, $id)
{
$data = Informasi::findOrFail($id);
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
]);
$gambar = $data->gambar;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
$data->update([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil diupdate');
}
public function destroy($id)
{
Informasi::findOrFail($id)->delete();
return back()->with('success', 'Berhasil dihapus');
}
}

View File

@ -0,0 +1,103 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Informasi;
use Illuminate\Support\Facades\Auth;
class InformasiController extends Controller
{
public function index()
{
$informasi = Informasi::latest()->get();
return view('admin.informasi.index', compact('informasi'));
}
public function create()
{
return view('admin.informasi.create');
}
public function store(Request $request)
{
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
'gambar' => 'nullable|image|mimes:jpg,png,jpeg|max:2048'
]);
$gambar = null;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
Informasi::create([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'penulis' => Auth::user()->name,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil ditambahkan');
}
public function edit($id)
{
$data = Informasi::findOrFail($id);
return view('admin.informasi.edit', compact('data'));
}
public function update(Request $request, $id)
{
$data = Informasi::findOrFail($id);
$request->validate([
'judul' => 'required',
'isi' => 'required',
'tanggal' => 'required|date',
]);
$gambar = $data->gambar;
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$gambar = time().'.'.$file->getClientOriginalExtension();
$file->move(public_path('informasi'), $gambar);
}
$data->update([
'judul' => $request->judul,
'isi' => $request->isi,
'tanggal' => $request->tanggal,
'kategori' => $request->kategori,
'gambar' => $gambar,
'is_penting' => $request->is_penting ? 1 : 0,
]);
return redirect()->route('informasi.index')->with('success', 'Berhasil diupdate');
}
public function destroy($id)
{
Informasi::findOrFail($id)->delete();
return back()->with('success', 'Berhasil dihapus');
}
public function detailInformasi($id)
{
$info = Informasi::findOrFail($id);
// 🔥 TAMBAH VIEW DI SINI
$info->increment('views');
return view('user.informasi.detail', compact('info'));
}
}

Some files were not shown because too many files have changed in this diff Show More