diff --git a/user/decorators.py b/user/decorators.py index 9af9843d..75f17c7c 100644 --- a/user/decorators.py +++ b/user/decorators.py @@ -26,4 +26,17 @@ def wrap(request, *args, **kwargs): path = request.get_full_path() return redirect("/profile/login/?next="+ path) + return wrap + + +# 로컬 유저만 접근할 수 있도록 하는 데코레이터 +# 소셜 유저일 경우 mypage로 이동시키게 하기 (현재 password change만이 소셜 유저가 접근 불가능한 기능이기 때문) +def local_user(function): + @wraps(function) + def wrap(request, *args, **kwargs): + if request.user.is_social == False and request.user.is_ToS == True: + return function(request, *args, **kwargs) + else: + return redirect("profile:mypage") + return wrap \ No newline at end of file diff --git a/user/views.py b/user/views.py index b9eb9ec7..845038cf 100644 --- a/user/views.py +++ b/user/views.py @@ -37,7 +37,7 @@ from .forms import CustomSetPasswordForm # ----------------------smtp------------------------------- -from .decorators import allowed_user, required_login +from .decorators import allowed_user, required_login, local_user # ----login 관련---- @@ -381,8 +381,8 @@ def profile_modify(request): return render(request, 'profile/profile_update.html', ctx) # TODO : 기존과 같은 비밀번호로 바꿔도 바뀜... -# TODO : local user만 가능하도록 decorator 만들어주기 @required_login +@local_user def password_change(request): if request.method == 'POST': form = LocalPasswordChangeForm(request.user, request.POST)