216 lines
5.0 KiB
Python
216 lines
5.0 KiB
Python
from sqladmin import ModelView
|
|
|
|
from app.user.models import RefreshToken, SocialAccount, User
|
|
|
|
|
|
class UserAdmin(ModelView, model=User):
|
|
name = "사용자"
|
|
name_plural = "사용자 목록"
|
|
icon = "fa-solid fa-user"
|
|
category = "사용자 관리"
|
|
page_size = 20
|
|
|
|
column_list = [
|
|
"id",
|
|
"kakao_id",
|
|
"email",
|
|
"nickname",
|
|
"role",
|
|
"is_active",
|
|
"is_deleted",
|
|
"created_at",
|
|
]
|
|
|
|
column_details_list = [
|
|
"id",
|
|
"kakao_id",
|
|
"email",
|
|
"nickname",
|
|
"profile_image_url",
|
|
"thumbnail_image_url",
|
|
"phone",
|
|
"name",
|
|
"birth_date",
|
|
"gender",
|
|
"is_active",
|
|
"is_admin",
|
|
"role",
|
|
"is_deleted",
|
|
"deleted_at",
|
|
"last_login_at",
|
|
"created_at",
|
|
"updated_at",
|
|
]
|
|
|
|
form_excluded_columns = [
|
|
"created_at",
|
|
"updated_at",
|
|
"user_projects",
|
|
"refresh_tokens",
|
|
"social_accounts",
|
|
]
|
|
|
|
column_searchable_list = [
|
|
User.kakao_id,
|
|
User.email,
|
|
User.nickname,
|
|
User.phone,
|
|
User.name,
|
|
]
|
|
|
|
column_default_sort = (User.created_at, True)
|
|
|
|
column_sortable_list = [
|
|
User.id,
|
|
User.kakao_id,
|
|
User.email,
|
|
User.nickname,
|
|
User.role,
|
|
User.is_active,
|
|
User.is_deleted,
|
|
User.created_at,
|
|
]
|
|
|
|
column_labels = {
|
|
"id": "ID",
|
|
"kakao_id": "카카오 ID",
|
|
"email": "이메일",
|
|
"nickname": "닉네임",
|
|
"profile_image_url": "프로필 이미지",
|
|
"thumbnail_image_url": "썸네일 이미지",
|
|
"phone": "전화번호",
|
|
"name": "실명",
|
|
"birth_date": "생년월일",
|
|
"gender": "성별",
|
|
"is_active": "활성화",
|
|
"is_admin": "관리자",
|
|
"role": "권한",
|
|
"is_deleted": "삭제됨",
|
|
"deleted_at": "삭제일시",
|
|
"last_login_at": "마지막 로그인",
|
|
"created_at": "생성일시",
|
|
"updated_at": "수정일시",
|
|
}
|
|
|
|
|
|
class RefreshTokenAdmin(ModelView, model=RefreshToken):
|
|
name = "리프레시 토큰"
|
|
name_plural = "리프레시 토큰 목록"
|
|
icon = "fa-solid fa-key"
|
|
category = "사용자 관리"
|
|
page_size = 20
|
|
|
|
column_list = [
|
|
"id",
|
|
"user_id",
|
|
"is_revoked",
|
|
"expires_at",
|
|
"created_at",
|
|
]
|
|
|
|
column_details_list = [
|
|
"id",
|
|
"user_id",
|
|
"token_hash",
|
|
"expires_at",
|
|
"is_revoked",
|
|
"created_at",
|
|
"revoked_at",
|
|
"user_agent",
|
|
"ip_address",
|
|
]
|
|
|
|
form_excluded_columns = ["created_at", "user"]
|
|
|
|
column_searchable_list = [
|
|
RefreshToken.user_id,
|
|
RefreshToken.token_hash,
|
|
RefreshToken.ip_address,
|
|
]
|
|
|
|
column_default_sort = (RefreshToken.created_at, True)
|
|
|
|
column_sortable_list = [
|
|
RefreshToken.id,
|
|
RefreshToken.user_id,
|
|
RefreshToken.is_revoked,
|
|
RefreshToken.expires_at,
|
|
RefreshToken.created_at,
|
|
]
|
|
|
|
column_labels = {
|
|
"id": "ID",
|
|
"user_id": "사용자 ID",
|
|
"token_hash": "토큰 해시",
|
|
"expires_at": "만료일시",
|
|
"is_revoked": "폐기됨",
|
|
"created_at": "생성일시",
|
|
"revoked_at": "폐기일시",
|
|
"user_agent": "User Agent",
|
|
"ip_address": "IP 주소",
|
|
}
|
|
|
|
|
|
class SocialAccountAdmin(ModelView, model=SocialAccount):
|
|
name = "소셜 계정"
|
|
name_plural = "소셜 계정 목록"
|
|
icon = "fa-solid fa-share-nodes"
|
|
category = "사용자 관리"
|
|
page_size = 20
|
|
|
|
column_list = [
|
|
"id",
|
|
"user_id",
|
|
"platform",
|
|
"platform_username",
|
|
"is_active",
|
|
"connected_at",
|
|
]
|
|
|
|
column_details_list = [
|
|
"id",
|
|
"user_id",
|
|
"platform",
|
|
"platform_user_id",
|
|
"platform_username",
|
|
"platform_data",
|
|
"scope",
|
|
"token_expires_at",
|
|
"is_active",
|
|
"connected_at",
|
|
"updated_at",
|
|
]
|
|
|
|
form_excluded_columns = ["connected_at", "updated_at", "user"]
|
|
|
|
column_searchable_list = [
|
|
SocialAccount.user_id,
|
|
SocialAccount.platform,
|
|
SocialAccount.platform_user_id,
|
|
SocialAccount.platform_username,
|
|
]
|
|
|
|
column_default_sort = (SocialAccount.connected_at, True)
|
|
|
|
column_sortable_list = [
|
|
SocialAccount.id,
|
|
SocialAccount.user_id,
|
|
SocialAccount.platform,
|
|
SocialAccount.is_active,
|
|
SocialAccount.connected_at,
|
|
]
|
|
|
|
column_labels = {
|
|
"id": "ID",
|
|
"user_id": "사용자 ID",
|
|
"platform": "플랫폼",
|
|
"platform_user_id": "플랫폼 사용자 ID",
|
|
"platform_username": "플랫폼 사용자명",
|
|
"platform_data": "플랫폼 데이터",
|
|
"scope": "권한 범위",
|
|
"token_expires_at": "토큰 만료일시",
|
|
"is_active": "활성화",
|
|
"connected_at": "연동일시",
|
|
"updated_at": "수정일시",
|
|
}
|