diff --git a/frontend/auth_providers/fdu.py b/frontend/auth_providers/fdu.py index 20c358f..f1851ca 100644 --- a/frontend/auth_providers/fdu.py +++ b/frontend/auth_providers/fdu.py @@ -15,7 +15,7 @@ class LoginView(ExternalLoginView): class GetCodeView(ExternalGetCodeView): provider = 'fdu' duration = timedelta(hours=1) - validate_identity = UserRegexAndDomainEmailValidator(['fudan.edu.cn', 'm.fudan.edu.cn'], r'^\d{11}$') + validate_identity = UserRegexAndDomainEmailValidator(['fudan.edu.cn', 'm.fudan.edu.cn'], r'^[a-zA-Z0-9._%+-]+$') urlpatterns = [ diff --git a/frontend/auth_providers/shu.py b/frontend/auth_providers/shu.py index 5b4f672..0e2f31b 100644 --- a/frontend/auth_providers/shu.py +++ b/frontend/auth_providers/shu.py @@ -15,7 +15,7 @@ class LoginView(ExternalLoginView): class GetCodeView(ExternalGetCodeView): provider = 'shu' duration = timedelta(hours=1) - validate_identity = UserRegexAndDomainEmailValidator('shu.edu.cn', r'^(?:[a-z]|_|-|\d){3,50}$') + validate_identity = UserRegexAndDomainEmailValidator('shu.edu.cn', r'^[a-z0-9_-]{3,50}$') urlpatterns = [ diff --git a/frontend/auth_providers/sjtu.py b/frontend/auth_providers/sjtu.py new file mode 100644 index 0000000..b962794 --- /dev/null +++ b/frontend/auth_providers/sjtu.py @@ -0,0 +1,24 @@ +from datetime import timedelta + +from django.urls import path + +from .base import UserRegexAndDomainEmailValidator +from .external import ExternalLoginView, ExternalGetCodeView + + +class LoginView(ExternalLoginView): + template_context = {'provider_name': '上海交通大学'} + provider = 'sjtu' + group = 'sjtu' + + +class GetCodeView(ExternalGetCodeView): + provider = 'sjtu' + duration = timedelta(hours=1) + validate_identity = UserRegexAndDomainEmailValidator('sjtu.edu.cn', r'^\w+([-+.]\w+)*$') + + +urlpatterns = [ + path('ouc/login/', LoginView.as_view()), + path('ouc/get_code/', GetCodeView.as_view()), +] diff --git a/frontend/auth_providers/xmut.py b/frontend/auth_providers/xmut.py index c0e31b3..e81ea42 100644 --- a/frontend/auth_providers/xmut.py +++ b/frontend/auth_providers/xmut.py @@ -2,7 +2,7 @@ from django.urls import path -from .base import DomainEmailValidator +from .base import UserRegexAndDomainEmailValidator from .external import ExternalLoginView, ExternalGetCodeView @@ -15,7 +15,7 @@ class LoginView(ExternalLoginView): class GetCodeView(ExternalGetCodeView): provider = 'xmut' duration = timedelta(hours=1) - validate_identity = DomainEmailValidator(['s.xmut.edu.cn']) + validate_identity = UserRegexAndDomainEmailValidator('s.xmut.edu.cn', r'^[0-9]{9}$') urlpatterns = [ diff --git a/frontend/templates/login.html b/frontend/templates/login.html index d2739be..b2e4088 100644 --- a/frontend/templates/login.html +++ b/frontend/templates/login.html @@ -26,16 +26,14 @@

协办单位选手

中山大学 西安电子科技大学 哈尔滨工业大学 - 国防科技大学 复旦大学 同济大学 广东海洋大学 - 广东工业大学 - 广州大学 南方科技大学 厦门理工学院 上海大学 南阳理工学院 + 上海交通大学

其他选手

diff --git a/frontend/urls.py b/frontend/urls.py index 50ba1a2..113f1a1 100644 --- a/frontend/urls.py +++ b/frontend/urls.py @@ -35,16 +35,14 @@ path('accounts/', include('frontend.auth_providers.sysu')), path('accounts/', include('frontend.auth_providers.xidian')), path('accounts/', include('frontend.auth_providers.hit')), - path('accounts/', include('frontend.auth_providers.nudt')), path('accounts/', include('frontend.auth_providers.fdu')), path('accounts/', include('frontend.auth_providers.tongji')), path('accounts/', include('frontend.auth_providers.gdou')), - path('accounts/', include('frontend.auth_providers.gdut')), - path('accounts/', include('frontend.auth_providers.gzhu')), path('accounts/', include('frontend.auth_providers.sustech')), path('accounts/', include('frontend.auth_providers.xmut')), path('accounts/', include('frontend.auth_providers.shu')), path('accounts/', include('frontend.auth_providers.nyist')), + path('accounts/', include('frontend.auth_providers.sjtu')), path('accounts/', include('frontend.auth_providers.sms')), path('accounts/', include('allauth.socialaccount.providers.google.urls')), path('accounts/', include('allauth.socialaccount.providers.microsoft.urls')), diff --git a/server/user/interface.py b/server/user/interface.py index 3eb7101..39b09f0 100644 --- a/server/user/interface.py +++ b/server/user/interface.py @@ -52,16 +52,14 @@ class User: 'sysu': '中山大学', 'xidian': '西安电子科技大学', 'hit': '哈尔滨工业大学', - 'nudt': '国防科技大学', 'fdu': '复旦大学', 'tongji': '同济大学', 'gdou': '广东海洋大学', - 'gdut': '广东工业大学', - 'gzhu': '广州大学', 'sustech': '南方科技大学', 'xmut': '厦门理工学院', 'shu': '上海大学', 'nyist': '南阳理工学院', + 'sjtu': '上海交通大学', 'other': '其他选手', 'banned': '已封禁', } @@ -75,23 +73,21 @@ class User: profile_required = { 'noscore': ['nickname'], 'ustc': ['nickname', 'name', 'sno', 'tel', 'email'], - 'zju': ['nickname', 'name', 'sno', 'school', 'campus'], - 'jlu': ['nickname', '/name/sno/qq/0'], - 'nuaa': ['nickname', 'name', 'sno'], - 'neu': ['nickname', 'name', 'sno', 'school'], - 'sysu': ['nickname', 'name', 'sno'], - 'xidian': ['nickname', 'name', 'sno'], - 'hit': ['nickname', 'name', 'sno', 'campus'], - 'nudt': ['nickname', 'name', 'email'], - 'fdu': ['nickname', 'name', 'sno'], - 'tongji': ['nickname', 'name', 'sno', 'school', 'major'], - 'gdou': ['nickname', 'name', 'sno'], - 'gdut': ['nickname', 'name', 'sno'], - 'gzhu': ['nickname', 'name', 'sno'], + 'zju': ['nickname', 'name', 'sno', 'qq', 'major'], + 'jlu': ['nickname', 'name', 'sno', 'major'], + 'nuaa': ['nickname', 'name', 'sno', 'qq'], + 'neu': ['nickname', 'name', 'sno', 'school', 'major', 'qq'], + 'sysu': ['nickname', 'name', 'sno', 'school', 'major', 'qq'], + 'xidian': ['nickname', 'name', 'sno', 'qq', 'major'], + 'hit': ['nickname', 'name', 'sno', 'campus', 'school', 'qq'], + 'fdu': ['nickname', 'name', 'sno', 'school', 'major'], + 'tongji': ['nickname', 'name', 'sno', 'major'], + 'gdou': ['nickname', 'name', 'sno', 'school', 'campus', 'major', 'qq'], 'sustech': ['nickname', 'name', 'sno'], - 'xmut': ['nickname', 'name', 'sno'], - 'shu': ['nickname', 'name', 'sno'], - 'nyist': ['nickname', 'name', 'sno'], + 'xmut': ['nickname', 'name', 'sno', 'school', 'campus', 'major', 'qq'], + 'shu': ['nickname'], + 'nyist': ['nickname', 'name', 'sno', 'school', 'major', 'qq'], + 'sjtu': ['nickname', 'name', 'sno'], 'other': ['nickname'], 'banned': ['nickname'], } diff --git a/server/user/migrations/0017_update_groups_2024.py b/server/user/migrations/0017_update_groups_2024.py new file mode 100644 index 0000000..942548e --- /dev/null +++ b/server/user/migrations/0017_update_groups_2024.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.16 on 2024-10-23 07:45 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('user', '0016_add_nyist'), + ] + + operations = [ + migrations.AlterModelOptions( + name='user', + options={'default_permissions': (), 'permissions': [('full', '管理个人信息'), ('view', '查看个人信息'), ('view_ustc', '查看中国科学技术大学个人信息'), ('view_zju', '查看浙江大学个人信息'), ('view_jlu', '查看吉林大学个人信息'), ('view_nuaa', '查看南京航空航天大学个人信息'), ('view_neu', '查看东北大学个人信息'), ('view_sysu', '查看中山大学个人信息'), ('view_xidian', '查看西安电子科技大学个人信息'), ('view_hit', '查看哈尔滨工业大学个人信息'), ('view_fdu', '查看复旦大学个人信息'), ('view_tongji', '查看同济大学个人信息'), ('view_gdou', '查看广东海洋大学个人信息'), ('view_sustech', '查看南方科技大学个人信息'), ('view_xmut', '查看厦门理工学院个人信息'), ('view_shu', '查看上海大学个人信息'), ('view_nyist', '查看南阳理工学院个人信息'), ('view_sjtu', '查看上海交通大学个人信息')]}, + ), + ] diff --git a/server/user/models.py b/server/user/models.py index 170b044..e8a1054 100644 --- a/server/user/models.py +++ b/server/user/models.py @@ -35,16 +35,14 @@ class Meta: ('view_sysu', '查看中山大学个人信息'), ('view_xidian', '查看西安电子科技大学个人信息'), ('view_hit', '查看哈尔滨工业大学个人信息'), - ('view_nudt', '查看国防科技大学个人信息'), ('view_fdu', '查看复旦大学个人信息'), ('view_tongji', '查看同济大学个人信息'), ('view_gdou', '查看广东海洋大学个人信息'), - ('view_gdut', '查看广东工业大学个人信息'), - ('view_gzhu', '查看广州大学个人信息'), ('view_sustech', '查看南方科技大学个人信息'), ('view_xmut', '查看厦门理工学院个人信息'), ('view_shu', '查看上海大学个人信息'), ('view_nyist', '查看南阳理工学院个人信息'), + ('view_sjtu', '查看上海交通大学个人信息'), ]