diff --git a/fir_client/src/components/FirHeader.vue b/fir_client/src/components/FirHeader.vue index a004358..46c9fcf 100644 --- a/fir_client/src/components/FirHeader.vue +++ b/fir_client/src/components/FirHeader.vue @@ -14,12 +14,12 @@ - +
- + {{$store.state.userinfo.first_name }} diff --git a/fir_client/src/components/FirLogin.vue b/fir_client/src/components/FirLogin.vue index 25e9916..b0ee396 100644 --- a/fir_client/src/components/FirLogin.vue +++ b/fir_client/src/components/FirLogin.vue @@ -44,9 +44,9 @@ 登录 - - - + + 注册 + diff --git a/fir_client/src/components/FirRegist.vue b/fir_client/src/components/FirRegist.vue index a5278a7..03123ee 100644 --- a/fir_client/src/components/FirRegist.vue +++ b/fir_client/src/components/FirRegist.vue @@ -24,40 +24,44 @@ + + + - + + :src="cptch.cptch_image" + fit="contain" @click="get_auth_code"> - - - - - - - - - - - 获取验证码 - - - - + + + + + + + + + + + + + + + + + + 注册 @@ -76,6 +80,8 @@ diff --git a/fir_client/src/components/FirUserProfileBase.vue b/fir_client/src/components/FirUserProfileBase.vue index 2c4acf0..d7bd62f 100644 --- a/fir_client/src/components/FirUserProfileBase.vue +++ b/fir_client/src/components/FirUserProfileBase.vue @@ -13,7 +13,7 @@
- +
diff --git a/fir_client/src/restful/index.js b/fir_client/src/restful/index.js index c1f1e8b..f6fb306 100644 --- a/fir_client/src/restful/index.js +++ b/fir_client/src/restful/index.js @@ -172,6 +172,22 @@ export function loginFun(callBack, params, load = true) { ); } +/**用户注册 */ +export function registerFun(callBack, params, load = true) { + getData( + params.methods, + USERSEVER + '/register', + params.data, + data => { + callBack(data); + }, + load, + true, + true + ); +} + + /**用户退出 */ export function logout(callBack, params, load = true) { getData( diff --git a/fir_ser/api/urls.py b/fir_ser/api/urls.py index f87c7d4..5bdb362 100644 --- a/fir_ser/api/urls.py +++ b/fir_ser/api/urls.py @@ -16,7 +16,7 @@ Including another URLconf from django.contrib import admin from django.urls import path, re_path, include -from api.views.login import LoginView, UserInfoView +from api.views.login import LoginView, UserInfoView, RegistView from api.views.logout import LogoutView from api.views.apps import AppsView, AppInfoView, AppReleaseinfoView from api.views.download import ShortDownloadView @@ -32,6 +32,7 @@ from api.views.supersign import DeveloperView, SuperSignUsedView, AppUDIDUsedVie urlpatterns = [ # path("",include(router.urls)), re_path("^login", LoginView.as_view()), + re_path("^register", RegistView.as_view()), re_path("^logout", LogoutView.as_view()), re_path("^apps$", AppsView.as_view()), re_path("^storage$", StorageView.as_view()), diff --git a/fir_ser/api/views/login.py b/fir_ser/api/views/login.py index 0c229e0..0a0e549 100644 --- a/fir_ser/api/views/login.py +++ b/fir_ser/api/views/login.py @@ -83,6 +83,51 @@ class LoginView(APIView): response.data = get_captcha() return Response(response.dict) +class RegistView(APIView): + def generate_key(self): + return binascii.hexlify(os.urandom(32)).decode() + + def post(self, request): + response = BaseResponse() + receive = request.data + + username = receive.get("username", None) + is_valid = valid_captcha(receive.get("cptch_key", None), receive.get("authcode", None), username) + if is_valid: + if login_auth_failed("get", username): + password = receive.get("password") + password2 = receive.get("password2") + if password == password2: + + try: + UserInfo.objects.get(username=username) + login_auth_failed("set", username) + response.msg = "邮箱已经存在,请更换其他邮箱" + response.code = 1002 + except UserInfo.DoesNotExist: + user_obj = UserInfo.objects.create_user(username, email=username, password=password,first_name=username) + if user_obj: + response.msg = "注册成功" + response.code = 1000 + else: + response.code = 1001 + response.msg = "密码不一致" + else: + response.code = 1006 + logger.error("username:%s failed too try , locked" % (username,)) + response.msg = "用户注册失败次数过多,已被锁定,请1小时之后再次尝试" + else: + response.code = 1001 + response.msg = "验证码有误" + + return Response(response.dict) + + def get(self, request): + response = BaseResponse() + response.data = get_captcha() + return Response(response.dict) + + class UserInfoView(APIView): authentication_classes = [ExpiringTokenAuthentication, ] @@ -170,7 +215,15 @@ class UserInfoView(APIView): sms_token_obj = DownloadToken() if sms_token_obj.verify_token(sms_token, data.get("sms_code", None)): request.user.mobile = data.get("mobile", request.user.mobile) - request.user.save() + try: + request.user.save() + except Exception as e: + serializer = UserInfoSerializer(request.user) + res.data = serializer.data + res.code = 1004 + res.msg = "信息保存失败" + logger.error("User %s info save failed. Excepiton:%s" % (request.user,e)) + return Response(res.dict) serializer = UserInfoSerializer(request.user) res.data = serializer.data return Response(res.dict)