이 문서는 jiny/subscribe 패키지가 기존 Jiny 생태계 패키지들과 어떻게 통합되는지 설명합니다.
{
"require": {
"jiny/admin": "^1.0"
}
}- 사용자 테이블:
users(중앙집중식 관리자 관리) - 인증 미들웨어:
admin(기존 관리자 권한 검증) - 관리 인터페이스: 기존 Jiny Admin 사이드바 확장
- 권한 시스템:
isAdmin,utype,admin_user_types테이블 활용
// 기존 jiny/admin 미들웨어 활용
Route::middleware(['admin'])->prefix('admin/subscribe')->group(function () {
// 구독 관리 라우트들
});
// 기존 Admin 사이드바 확장
@include('jiny-subscribe::partials.admin.sidebar'){
"require": {
"jiny/auth": "^0.5"
}
}- 사용자 테이블:
users_001~users_099(샤딩 구조) - JWT 인증: 토큰 기반 무상태 인증
- 미들웨어:
jwt.auth(고객),jwt.auth + partner.verify(파트너) - 확장성: 대용량 사용자 처리를 위한 수평적 확장
// 기존 jiny/auth JWT 시스템 활용
Route::middleware(['jwt.auth'])->prefix('home/subscribe')->group(function () {
// 고객 구독 라우트들
});
// 파트너용 추가 검증
Route::middleware(['jwt.auth', 'partner.verify'])->prefix('partner')->group(function () {
// 파트너 구독 라우트들
});패키지: jiny/admin
테이블: users (중앙집중)
인증: 세션 기반
미들웨어: admin
접근: /admin/subscribe/*
권한: isAdmin = true, utype 검증
패키지: jiny/auth
테이블: 동적 샤딩 (jiny/auth 설정 기반)
- config('jiny-auth.sharding.table_prefix') + 샤드번호
- 예: users_001 ~ users_099 (기본값)
인증: JWT 토큰
미들웨어: jwt.auth
접근: /home/subscribe/*
확장: 대용량 사용자 지원
패키지: jiny/auth + 추가 검증
테이블: 동적 샤딩 + partners
- jiny/auth 샤딩 테이블 + partners 연결
인증: JWT 토큰 + 파트너 검증
미들웨어: jwt.auth + partner.verify
접근: /partner/*
특징: MLM 트리 구조 지원
users(jiny/admin): 관리자 계정- 샤딩 테이블 (jiny/auth): 고객/파트너 계정
- 테이블명:
config('jiny-auth.sharding.table_prefix')+ 샤드번호 - 샤드 수:
config('jiny-auth.sharding.shard_count') - 기본값:
users_001~users_099(100개)
- 테이블명:
admin_user_types(jiny/admin): 관리자 권한 관리admin_user_logs(jiny/admin): 관리자 활동 로그
subscribes: 구독 카탈로그subscriptions: 구독 관리 (customer_id → users_0xx 참조)partners: 파트너 트리 구조 (user_id → users_0xx 참조)partner_commissions: 커미션 관리free_trial_configs: 무료 체험 설정subscribe_executions: 구독 실행 이력
-- jiny/auth 설정을 읽어서 동적으로 연결
-- config('jiny-auth.sharding.shard_count') 만큼의 샤드 지원
-- 구독 테이블은 jiny/auth의 샤딩 테이블과 연결
ALTER TABLE subscriptions
ADD COLUMN customer_shard VARCHAR(3) NOT NULL COMMENT '고객 샤드 번호 (jiny/auth 설정 기반)';
-- 파트너 테이블도 jiny/auth의 샤딩 테이블과 연결
ALTER TABLE partners
ADD COLUMN user_shard VARCHAR(3) NOT NULL COMMENT '사용자 샤드 번호 (jiny/auth 설정 기반)';
-- CustomerShardsubscribe에서 동적으로 처리
-- $shardCount = config('jiny-auth.sharding.shard_count', 100);
-- $tablePrefix = config('jiny-auth.sharding.table_prefix', 'users_');// jiny/admin 패키지 미들웨어 활용
Route::middleware(['admin'])->prefix('admin/subscribe')->group(function () {
Route::resource('catalog', AdminsubscribeCatalogController::class);
Route::resource('subscriptions', AdminSubscriptionController::class);
Route::resource('partners', AdminPartnerController::class);
});// jiny/auth 패키지 JWT 미들웨어 활용
Route::middleware(['jwt.auth'])->prefix('home/subscribe')->group(function () {
Route::get('catalog', [CustomersubscribeController::class, 'catalog']);
Route::resource('subscriptions', CustomerSubscriptionController::class);
Route::resource('trials', CustomerTrialController::class);
});// jiny/auth JWT + 추가 파트너 검증
Route::middleware(['jwt.auth', 'partner.verify'])->prefix('partner')->group(function () {
Route::get('dashboard', [PartnerController::class, 'dashboard']);
Route::resource('subscriptions', PartnerSubscriptionController::class);
Route::resource('commissions', PartnerCommissionController::class);
});composer require jiny/admin:^1.0
composer require jiny/auth:^0.5
composer require jiny/subscribe:^1.0// config/app.php
'providers' => [
// ...
Jiny\Admin\JinyAdminsubscribeProvider::class,
Jiny\Auth\JinyAuthsubscribeProvider::class,
Jiny\Subscribe\JinysubscribesubscribeProvider::class,
],// app/Http/Kernel.php
protected $routeMiddleware = [
// 기존 jiny 미들웨어
'admin' => \Jiny\Admin\Http\Middleware\AdminMiddleware::class,
'jwt.auth' => \Jiny\Auth\Http\Middleware\JWTAuthMiddleware::class,
// 새로 추가되는 미들웨어
'partner.verify' => \Jiny\Subscribe\Http\Middleware\PartnerVerificationMiddleware::class,
];# 기존 패키지 마이그레이션 (이미 실행된 경우 스킵)
php artisan migrate --path=vendor/jiny/admin/database/migrations
php artisan migrate --path=vendor/jiny/auth/database/migrations
# 새로운 구독 마이그레이션
php artisan migrate --path=vendor/jiny/subscribe/database/migrations- 기존 jiny/admin, jiny/auth 기능을 손상시키지 않도록 주의
- 새로운 기능은 별도 네임스페이스에서 개발
- 기존 테이블 구조 변경 금지
- 샤딩된 users_0xx 테이블 참조 시 샤드 번호 함께 저장
- 외래 키 제약조건 설정 시 샤딩 구조 고려
- 트랜잭션 처리 시 여러 샤드에 걸친 작업 주의
- JWT 토큰 검증 시 캐싱 활용
- 샤딩 테이블 조회 시 적절한 인덱스 사용
- 대용량 데이터 처리 시 배치 작업 활용
- 기존 jiny 패키지의 보안 정책 준수
- 추가적인 파트너 검증 로직 구현
- 민감한 데이터 암호화 저장
| jiny/subscribe | jiny/admin | jiny/auth | Laravel |
|---|---|---|---|
| 1.0.x | ^1.0 | ^0.5 | ^10.0 |
| 1.1.x | ^1.0 | ^0.5 | ^10.0 |
- 문서:
/vendor/jiny/subscribe/docs/ - 예제:
/vendor/jiny/subscribe/docs/sample01.md,sample02.md - 태스크:
/vendor/jiny/subscribe/task/001_project_overview.md~016_implementation_checklist.md - GitHub: https://github.com/jinyphp/subscribe
- Issues: 기존 Jiny 패키지와의 통합 문제는 각 패키지 저장소에 문의