|
|
|
|
@ -1,197 +1,56 @@
|
|
|
|
|
"""
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
Django 数据库迁移模块 - OAuth 认证配置
|
|
|
|
|
=======
|
|
|
|
|
OAuth应用数据库迁移文件
|
|
|
|
|
# oauth/migrations/0001_initial.py
|
|
|
|
|
|
|
|
|
|
本迁移文件由Django自动生成,用于创建OAuth认证相关的数据库表结构。
|
|
|
|
|
包含OAuth配置和OAuth用户两个主要模型,支持多种第三方登录方式。
|
|
|
|
|
|
|
|
|
|
生成的表结构:
|
|
|
|
|
- oauth_oauthconfig: OAuth服务提供商配置表
|
|
|
|
|
- oauth_oauthuser: OAuth用户信息表
|
|
|
|
|
|
|
|
|
|
迁移依赖:
|
|
|
|
|
- 依赖于Django内置的用户模型(AUTH_USER_MODEL)
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
# Generated by Django 4.1.7 on 2023-03-07 09:53
|
|
|
|
|
>>>>>>> d4786ee23b15aa002b21504f1056098d46f303c5
|
|
|
|
|
|
|
|
|
|
该模块用于创建OAuth认证相关的数据库表结构,包含OAuth服务提供商配置和OAuth用户信息两个主要模型。
|
|
|
|
|
这是Django迁移系统自动生成的迁移文件,在Django 4.1.7版本中创建于2023-03-07。
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
# 导入Django核心模块
|
|
|
|
|
from django.conf import settings # 导入Django设置
|
|
|
|
|
from django.db import migrations, models # 导入数据库迁移和模型相关功能
|
|
|
|
|
import django.db.models.deletion # 导入外键删除操作
|
|
|
|
|
import django.utils.timezone # 导入时区工具
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
from django.db import migrations, models
|
|
|
|
|
import django.db.models.deletion
|
|
|
|
|
import django.utils.timezone
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
|
"""
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
OAuth认证系统的数据库迁移类
|
|
|
|
|
=======
|
|
|
|
|
OAuth应用初始迁移类
|
|
|
|
|
|
|
|
|
|
继承自migrations.Migration,定义数据库表结构的创建操作。
|
|
|
|
|
initial = True 表示这是该应用的第一个迁移文件。
|
|
|
|
|
"""
|
|
|
|
|
>>>>>>> d4786ee23b15aa002b21504f1056098d46f303c5
|
|
|
|
|
|
|
|
|
|
这个迁移类负责创建OAuth认证功能所需的数据库表结构,
|
|
|
|
|
包括OAuth服务提供商配置和第三方登录用户信息存储。
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
# 标记为初始迁移
|
|
|
|
|
initial = True
|
|
|
|
|
|
|
|
|
|
# 定义依赖关系 - 依赖于可切换的用户模型
|
|
|
|
|
dependencies = [
|
|
|
|
|
# 声明对Django用户模型的依赖
|
|
|
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
# 定义要执行的数据库操作
|
|
|
|
|
operations = [
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 创建OAuthConfig模型对应的数据库表
|
|
|
|
|
migrations.CreateModel(
|
|
|
|
|
name='OAuthConfig',
|
|
|
|
|
fields=[
|
|
|
|
|
# 主键ID字段,自增BigAutoField
|
|
|
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
|
|
|
# OAuth服务类型选择字段,支持多种第三方登录
|
|
|
|
|
('type', models.CharField(
|
|
|
|
|
choices=[('weibo', '微博'), ('google', '谷歌'), ('github', 'GitHub'), ('facebook', 'FaceBook'),
|
|
|
|
|
('qq', 'QQ')], default='a', max_length=10, verbose_name='类型')),
|
|
|
|
|
# OAuth应用的AppKey字段
|
|
|
|
|
('appkey', models.CharField(max_length=200, verbose_name='AppKey')),
|
|
|
|
|
# OAuth应用的AppSecret字段,用于安全认证
|
|
|
|
|
('appsecret', models.CharField(max_length=200, verbose_name='AppSecret')),
|
|
|
|
|
# OAuth回调地址字段,用于接收授权码
|
|
|
|
|
('callback_url',
|
|
|
|
|
models.CharField(default='http://www.baidu.com', max_length=200, verbose_name='回调地址')),
|
|
|
|
|
# 是否启用该OAuth配置的布尔字段
|
|
|
|
|
('is_enable', models.BooleanField(default=True, verbose_name='是否显示')),
|
|
|
|
|
# 记录创建时间,默认使用当前时间
|
|
|
|
|
('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
|
|
|
|
|
# 记录最后修改时间,默认使用当前时间
|
|
|
|
|
('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')),
|
|
|
|
|
],
|
|
|
|
|
options={
|
|
|
|
|
# 设置模型在Admin中的单数显示名称
|
|
|
|
|
=======
|
|
|
|
|
# 创建OAuth配置表
|
|
|
|
|
migrations.CreateModel(
|
|
|
|
|
name='OAuthConfig',
|
|
|
|
|
fields=[
|
|
|
|
|
# 主键字段 - 使用BigAutoField作为自增主键
|
|
|
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
|
|
|
# OAuth类型字段 - 使用选择框限定支持的第三方登录类型
|
|
|
|
|
('type', models.CharField(
|
|
|
|
|
choices=[('weibo', '微博'), ('google', '谷歌'), ('github', 'GitHub'), ('facebook', 'FaceBook'),
|
|
|
|
|
('qq', 'QQ')], default='a', max_length=10, verbose_name='类型')),
|
|
|
|
|
# AppKey字段 - 存储OAuth应用的密钥标识
|
|
|
|
|
('type', models.CharField(choices=[('weibo', '微博'), ('google', '谷歌'), ('github', 'GitHub'), ('facebook', 'FaceBook'), ('qq', 'QQ')], default='a', max_length=10, verbose_name='类型')),
|
|
|
|
|
('appkey', models.CharField(max_length=200, verbose_name='AppKey')),
|
|
|
|
|
# AppSecret字段 - 存储OAuth应用的密钥
|
|
|
|
|
('appsecret', models.CharField(max_length=200, verbose_name='AppSecret')),
|
|
|
|
|
# 回调地址字段 - 默认设置为百度首页
|
|
|
|
|
('callback_url',
|
|
|
|
|
models.CharField(default='http://www.baidu.com', max_length=200, verbose_name='回调地址')),
|
|
|
|
|
# 启用状态字段 - 控制该OAuth配置是否可用
|
|
|
|
|
('callback_url', models.CharField(default='http://www.baidu.com', max_length=200, verbose_name='回调地址')),
|
|
|
|
|
('is_enable', models.BooleanField(default=True, verbose_name='是否显示')),
|
|
|
|
|
# 创建时间字段 - 自动记录创建时间
|
|
|
|
|
('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
|
|
|
|
|
# 最后修改时间字段 - 自动记录最后修改时间
|
|
|
|
|
('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')),
|
|
|
|
|
],
|
|
|
|
|
options={
|
|
|
|
|
# 管理后台显示名称
|
|
|
|
|
>>>>>>> d4786ee23b15aa002b21504f1056098d46f303c5
|
|
|
|
|
'verbose_name': 'oauth配置',
|
|
|
|
|
# 设置模型在Admin中的复数显示名称
|
|
|
|
|
'verbose_name_plural': 'oauth配置',
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 设置默认排序字段,按创建时间降序排列
|
|
|
|
|
'ordering': ['-created_time'],
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
# 创建OAuthUser模型对应的数据库表
|
|
|
|
|
migrations.CreateModel(
|
|
|
|
|
name='OAuthUser',
|
|
|
|
|
fields=[
|
|
|
|
|
# 主键ID字段,自增BigAutoField
|
|
|
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
|
|
|
# 第三方平台的用户唯一标识
|
|
|
|
|
('openid', models.CharField(max_length=50)),
|
|
|
|
|
# 用户在第三方平台的昵称
|
|
|
|
|
('nickname', models.CharField(max_length=50, verbose_name='昵称')),
|
|
|
|
|
# OAuth访问令牌,可为空
|
|
|
|
|
('token', models.CharField(blank=True, max_length=150, null=True)),
|
|
|
|
|
# 用户头像URL,可为空
|
|
|
|
|
('picture', models.CharField(blank=True, max_length=350, null=True)),
|
|
|
|
|
# OAuth服务类型
|
|
|
|
|
('type', models.CharField(max_length=50)),
|
|
|
|
|
# 用户邮箱,可为空
|
|
|
|
|
('email', models.CharField(blank=True, max_length=50, null=True)),
|
|
|
|
|
# 存储额外的元数据信息,使用Text字段
|
|
|
|
|
('metadata', models.TextField(blank=True, null=True)),
|
|
|
|
|
# 记录创建时间,默认使用当前时间
|
|
|
|
|
('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
|
|
|
|
|
# 记录最后修改时间,默认使用当前时间
|
|
|
|
|
('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')),
|
|
|
|
|
# 外键关联到本地用户模型,建立第三方账号与本地用户的关联
|
|
|
|
|
=======
|
|
|
|
|
# 默认排序规则 - 按创建时间倒序
|
|
|
|
|
'ordering': ['-created_time'],
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
# 创建OAuth用户表
|
|
|
|
|
migrations.CreateModel(
|
|
|
|
|
name='OAuthUser',
|
|
|
|
|
fields=[
|
|
|
|
|
# 主键字段
|
|
|
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
|
|
|
# 第三方平台用户唯一标识
|
|
|
|
|
('openid', models.CharField(max_length=50)),
|
|
|
|
|
# 用户在第三方平台的昵称
|
|
|
|
|
('nickname', models.CharField(max_length=50, verbose_name='昵称')),
|
|
|
|
|
# OAuth访问令牌 - 可为空
|
|
|
|
|
('token', models.CharField(blank=True, max_length=150, null=True)),
|
|
|
|
|
# 用户头像URL - 可为空
|
|
|
|
|
('picture', models.CharField(blank=True, max_length=350, null=True)),
|
|
|
|
|
# OAuth类型 - 标识来自哪个第三方平台
|
|
|
|
|
('type', models.CharField(max_length=50)),
|
|
|
|
|
# 用户邮箱 - 可为空
|
|
|
|
|
('email', models.CharField(blank=True, max_length=50, null=True)),
|
|
|
|
|
# 元数据字段 - 存储额外的用户信息(JSON格式)
|
|
|
|
|
('metadata', models.TextField(blank=True, null=True)),
|
|
|
|
|
# 创建时间
|
|
|
|
|
('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
|
|
|
|
|
# 最后修改时间
|
|
|
|
|
('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')),
|
|
|
|
|
# 外键关联到本地用户 - 建立第三方账号与本地账号的关联
|
|
|
|
|
>>>>>>> d4786ee23b15aa002b21504f1056098d46f303c5
|
|
|
|
|
('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
|
|
|
|
|
to=settings.AUTH_USER_MODEL, verbose_name='用户')),
|
|
|
|
|
('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='用户')),
|
|
|
|
|
],
|
|
|
|
|
options={
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 设置模型在Admin中的单数显示名称
|
|
|
|
|
=======
|
|
|
|
|
# 管理后台显示名称
|
|
|
|
|
>>>>>>> d4786ee23b15aa002b21504f1056098d46f303c5
|
|
|
|
|
'verbose_name': 'oauth用户',
|
|
|
|
|
# 设置模型在Admin中的复数显示名称
|
|
|
|
|
'verbose_name_plural': 'oauth用户',
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 设置默认排序字段,按创建时间降序排列
|
|
|
|
|
=======
|
|
|
|
|
# 默认排序规则
|
|
|
|
|
>>>>>>> d4786ee23b15aa002b21504f1056098d46f303c5
|
|
|
|
|
'ordering': ['-created_time'],
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
|