added account info and change password
This commit is contained in:
parent
2c06f689c5
commit
257c62484e
@ -11,6 +11,7 @@ class Pucko_User_Serializer(serializers.ModelSerializer):
|
||||
model = get_user_model()
|
||||
fields = (
|
||||
'username',
|
||||
'email',
|
||||
'is_staff',
|
||||
'date_joined',
|
||||
'slug'
|
||||
@ -62,3 +63,11 @@ class Logout_Serializer(serializers.Serializer):
|
||||
|
||||
class Meta:
|
||||
fields = ()
|
||||
|
||||
class Change_Password_Serializer(serializers.Serializer):
|
||||
old_password = serializers.CharField(required=True, write_only=True)
|
||||
new_password = serializers.CharField(required=True, write_only=True)
|
||||
message = serializers.CharField(read_only=True)
|
||||
|
||||
class Meta:
|
||||
fields = ("old_password", "new_password", "message")
|
||||
|
||||
@ -4,10 +4,14 @@ from .views import RenewView
|
||||
from .views import LogoutView
|
||||
from .views import LogoutAllView
|
||||
from .views import RegisterView
|
||||
from .views import ChangePasswordView
|
||||
from .views import AccountInfoView
|
||||
|
||||
urlpatterns = [
|
||||
path("create-token/", LoginView.as_view(), name="create_token"),
|
||||
path("refresh-token/", RenewView.as_view(), name="refresh-token"),
|
||||
path("account-info/", AccountInfoView.as_view({"get": "user_info"}), name="account-info"),
|
||||
path("change-password/", ChangePasswordView.as_view({"post": "change_password"}), name="change-password"),
|
||||
path("signup/", RegisterView.as_view(), name="signup"),
|
||||
path("logout/", LogoutView.as_view(), name="logout"),
|
||||
path("logout-all/", LogoutAllView.as_view(), name="logout-all")
|
||||
|
||||
@ -12,10 +12,14 @@ from knox.views import LoginView as KnoxLoginView
|
||||
from knox.views import LogoutView as KnoxLogoutView
|
||||
from knox.views import LogoutAllView as KnoxLogoutAllView
|
||||
|
||||
from settings.puckoviews import PuckoView
|
||||
from settings.puckolizers import Message_Serializer
|
||||
|
||||
from .serializer import Pucko_CreateUser_Serializer
|
||||
from .serializer import Pucko_Renew_Serializer
|
||||
from .serializer import Pucko_User_Serializer
|
||||
from .serializer import Pucko_Login_Serializer
|
||||
from .serializer import Change_Password_Serializer
|
||||
|
||||
class LoginView(KnoxLoginView):
|
||||
permission_classes = (AllowAny,)
|
||||
@ -31,6 +35,14 @@ class LoginView(KnoxLoginView):
|
||||
user = serializer.validated_data['user']
|
||||
login(request, user)
|
||||
return super(LoginView, self).post(request, format=None)
|
||||
|
||||
class AccountInfoView(PuckoView):
|
||||
permission_classes = (IsAuthenticated,)
|
||||
serializer_class = Pucko_User_Serializer
|
||||
|
||||
def user_info(self, request, format=None):
|
||||
serializer = self.serializer_class(request.user)
|
||||
return Response(serializer.data, status=200)
|
||||
|
||||
class RenewView(KnoxLoginView):
|
||||
authentication_classes = (TokenAuthentication,)
|
||||
@ -64,3 +76,21 @@ class RegisterView(CreateAPIView):
|
||||
queryset = get_user_model().objects.all()
|
||||
permission_classes = (AllowAny,)
|
||||
serializer_class = Pucko_CreateUser_Serializer
|
||||
|
||||
class ChangePasswordView(PuckoView):
|
||||
permission_classes = (IsAuthenticated,)
|
||||
serializer_class = Change_Password_Serializer
|
||||
|
||||
def change_password(self, request):
|
||||
old_password = request.data["old_password"]
|
||||
new_password = request.data["new_password"]
|
||||
|
||||
user = request.user
|
||||
|
||||
if not user.check_password(raw_password=old_password):
|
||||
serializer = Message_Serializer({"message": "Error: Could not change password. old password does not match."})
|
||||
return Response(serializer.data, status=403)
|
||||
user.set_password(new_password)
|
||||
user.save()
|
||||
serializer = Message_Serializer({"message": "password is updated"})
|
||||
return Response(serializer.data, status=200)
|
||||
Loading…
x
Reference in New Issue
Block a user