jiny/admin

Laravel Admin CRUD Generator with Livewire 3 - A comprehensive admin panel system for Laravel applications

1.0 2025-09-29 18:41 UTC

This package is auto-updated.

Last update: 2025-09-29 18:41:56 UTC


README

JinyPHP Admin 관리자 패키지입니다. Laravel 기반의 강력한 관리자 백엔드 시스템을 제공하는 패키지로, 보안, 인증, 권한 관리 등 엔터프라이즈급 관리 기능을 포함합니다.

📋 주요 기능

🔐 보안 기능

  • 2FA (Two-Factor Authentication) - Google Authenticator 지원
  • IP 화이트리스트 - 특정 IP만 관리자 접근 허용
  • CAPTCHA 통합 - reCAPTCHA, hCAPTCHA 지원
  • 세션 관리 - 동시 로그인 제한, 세션 추적
  • 비밀번호 정책 - 주기적 변경, 복잡도 검증
  • 로그인 시도 제한 - 무차별 공격 방지

👥 사용자 관리

  • 계층적 권한 관리 - 관리자 타입별 권한 설정
  • 사용자 활동 로그 - 모든 관리자 활동 추적
  • 프로필 관리 - 아바타, 개인정보 설정
  • 대량 사용자 관리 - CLI 명령어 지원

📧 알림 시스템

  • 이메일 템플릿 - 커스터마이징 가능한 템플릿
  • SMS 통합 - 다중 SMS 제공자 지원
  • Webhook - Slack, Discord 등 외부 서비스 연동
  • 실시간 알림 - 브라우저 알림 지원

🛠 개발 도구

  • Artisan 명령어 - 관리자 CRUD 자동 생성
  • Livewire 컴포넌트 - 반응형 UI 컴포넌트
  • RESTful API - API 엔드포인트 제공
  • 다국어 지원 - i18n 지원

📁 디렉토리 구조

vendor/jiny/admin/
├── src/
│   ├── Console/          # Artisan 명령어
│   ├── Http/
│   │   ├── Controllers/  # 컨트롤러
│   │   ├── Middleware/   # 미들웨어
│   │   ├── Livewire/     # Livewire 컴포넌트
│   │   └── Trait/        # HTTP 트레이트
│   ├── Models/           # Eloquent 모델
│   ├── Services/         # 비즈니스 로직
│   │   ├── Captcha/      # CAPTCHA 서비스
│   │   ├── Email/        # 이메일 서비스
│   │   ├── Notification/ # 알림 서비스
│   │   ├── Security/     # 보안 서비스
│   │   └── SMS/          # SMS 서비스
│   ├── Traits/           # 재사용 가능한 트레이트
│   └── JinyAdminServiceProvider.php
├── config/               # 설정 파일
├── database/
│   ├── migrations/       # 마이그레이션
│   ├── seeders/          # 시더
│   └── factories/        # 팩토리
├── resources/
│   └── views/           # Blade 템플릿
├── routes/              # 라우트 정의
├── stubs/               # 코드 생성 템플릿
└── tests/               # 테스트 파일

🚀 설치

요구사항

  • PHP 8.2+
  • Laravel 12.x
  • MySQL/PostgreSQL/SQLite
  • Composer 2.x

설치 방법

  1. Composer를 통한 패키지 설치:
composer require jiny/admin
  1. 데이터베이스 마이그레이션 실행:
php artisan migrate
  1. 설정 파일 발행 (선택사항):
php artisan vendor:publish --provider="Jiny\Admin\JinyAdminServiceProvider"
  1. 초기 관리자 생성:
php artisan admin:user-create

⚙️ 설정

환경 변수 (.env)

# 2FA 설정
ADMIN_2FA_ENABLED=true
ADMIN_2FA_ISSUER="Your App Name"

# CAPTCHA 설정
ADMIN_CAPTCHA_DRIVER=recaptcha
RECAPTCHA_SITE_KEY=your-site-key
RECAPTCHA_SECRET_KEY=your-secret-key

# IP 화이트리스트
ADMIN_IP_WHITELIST_ENABLED=true

# 세션 설정
ADMIN_SESSION_LIFETIME=120
ADMIN_CONCURRENT_SESSIONS=1

# 비밀번호 정책
ADMIN_PASSWORD_EXPIRY_DAYS=90
ADMIN_PASSWORD_MIN_LENGTH=8

📚 사용법

기본 라우트

  • /admin - 관리자 대시보드
  • /admin/login - 관리자 로그인
  • /admin/users - 사용자 관리
  • /admin/settings - 시스템 설정

Artisan 명령어

# 관리자 CRUD 생성
php artisan admin:make ResourceName

# 사용자 관리
php artisan admin:user-create
php artisan admin:user-delete
php artisan admin:users --list

# 보안 관리
php artisan admin:ip-unblock
php artisan admin:unblock-password
php artisan admin:captcha-logs

# 유지보수
php artisan admin:ip-cleanup
php artisan admin:sync-usertype-count

미들웨어 사용

// routes/web.php
Route::middleware(['admin', 'ip.whitelist', 'captcha'])->group(function () {
    Route::get('/admin/dashboard', [DashboardController::class, 'index']);
});

Livewire 컴포넌트

{{-- 관리자 테이블 --}}
@livewire('jiny-admin::admin-table', ['model' => 'User'])

{{-- 관리자 폼 --}}
@livewire('jiny-admin::admin-create', ['model' => 'User'])
@livewire('jiny-admin::admin-edit', ['model' => 'User', 'id' => $id])

🔒 보안 기능 상세

2FA 구현

use Jiny\Admin\Services\Security\TwoFactorService;

$twoFactor = new TwoFactorService();
$qrCode = $twoFactor->generateQRCode($user);
$verified = $twoFactor->verify($user, $code);

CAPTCHA 통합

use Jiny\Admin\Services\Captcha\CaptchaManager;

$captcha = app(CaptchaManager::class);
$verified = $captcha->verify($request->get('g-recaptcha-response'));

IP 화이트리스트

use Jiny\Admin\Models\AdminIpWhitelist;

AdminIpWhitelist::create([
    'ip_address' => '192.168.1.1',
    'description' => 'Office IP',
    'is_active' => true
]);

🧪 테스트

# 전체 테스트 실행
php artisan test

# 특정 테스트 실행
php artisan test --filter=AdminTest

📄 라이센스

이 패키지는 MIT 라이센스 하에 배포됩니다.

🤝 기여하기

버그 리포트, 기능 제안, 풀 리퀘스트는 언제나 환영합니다!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📞 지원

🎯 로드맵

  • GraphQL API 지원
  • 다크 모드 지원
  • 실시간 대시보드
  • AI 기반 보안 감지
  • 멀티 테넌시 지원

Jiny Admin - Enterprise-grade Admin Panel for Laravel Made with ❤️ by JinyPHP Team