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', '查看上海交通大学个人信息'),
]