Exemplo n.º 1
0
 def put(self, request, username):
     user = self._get_user_object(request, username)
     try:
         # if password is present in input data, change password
         if ('password' in request.DATA):
             # change password
             password = request.DATA['password']
             usermod(username, password)
             smbpasswd(username, password)
             user.set_password(password)
             user.save()
         # check if admin attribute has changed
         if ('is_active' in request.DATA):
             is_active = request.DATA['is_active']
             # put is through bacbone model save so is_active comes in
             # as a boolean
             if is_active != user.is_active:
                 if request.user.username == username:
                     e_msg = ('Cannot modify admin attribute of the '
                              'currently logged in user')
                     handle_exception(Exception(e_msg), request)
                 user.is_active = is_active
                 shell = settings.DEFAULT_SHELL
                 if (is_active is True):
                     shell = settings.ADMIN_SHELL
                 update_shell(username, shell)
                 user.save()
         return Response(UserSerializer(user).data)
     except RockStorAPIException:
         raise
     except Exception, e:
         handle_exception(e, request)
Exemplo n.º 2
0
 def put(self, request, username):
     user = self._get_user_object(request, username)
     try:
         # if password is present in input data, change password
         if ('password' in request.DATA):
             # change password
             password = request.DATA['password']
             usermod(username, password)
             smbpasswd(username, password)
             user.set_password(password)
             user.save()
         # check if admin attribute has changed
         if ('is_active' in request.DATA):
             is_active = request.DATA['is_active']
             # put is through bacbone model save so is_active comes in
             # as a boolean
             if is_active != user.is_active:
                 if request.user.username == username:
                     e_msg = ('Cannot modify admin attribute of the '
                              'currently logged in user')
                     handle_exception(Exception(e_msg), request)
                 user.is_active = is_active
                 shell = settings.DEFAULT_SHELL
                 if (is_active is True):
                     shell = settings.ADMIN_SHELL
                 update_shell(username, shell)
                 user.save()
         return Response(UserSerializer(user).data)
     except RockStorAPIException:
         raise
     except Exception, e:
         handle_exception(e, request)
Exemplo n.º 3
0
    def put(self, request, username):
        with self._handle_exception(request):
            if (username in self.exclude_list):
                if (username != 'root'):
                    e_msg = ('Editing restricted user(%s) is not supported.' %
                             username)
                    handle_exception(Exception(e_msg), request)
            email = request.data.get('email', None)
            new_pw = request.data.get('password', None)
            shell = request.data.get('shell', None)
            public_key = self._validate_public_key(request)
            admin = request.data.get('admin', False)
            if (User.objects.filter(username=username).exists()):
                u = User.objects.get(username=username)
                if (admin is True):
                    if (u.user is None):
                        if (new_pw is None):
                            e_msg = ('password reset is required to enable admin '
                                     'access. please provide a new password')
                            handle_exception(Exception(e_msg), request)
                        auser = DjangoUser.objects.create_user(username,
                                                               None, new_pw)
                        auser.is_active = True
                        auser.save()
                        u.user = auser
                        u.save()
                    elif (new_pw is not None):
                        u.user.set_password(new_pw)
                        u.user.save()
                elif (u.user is not None):
                    auser = u.user
                    u.user = None
                    auser.delete()

                u.public_key = public_key
                if (email is not None and email != ''):
                    u.email = email
                if (shell is not None and shell != u.shell):
                    u.shell = shell
                u.save()

            sysusers = combined_users()
            suser = None
            for u in sysusers:
                if (u.username == username):
                    suser = u
                    if (new_pw is not None):
                        usermod(username, new_pw)
                        smbpasswd(username, new_pw)
                    if (shell is not None):
                        update_shell(username, shell)
                    if (public_key is not None):
                        add_ssh_key(username, public_key)
                    break
            if (suser is None):
                e_msg = ('User(%s) does not exist' % username)
                handle_exception(Exception(e_msg), request)

            return Response(SUserSerializer(suser).data)
Exemplo n.º 4
0
    def put(self, request, username):
        with self._handle_exception(request):
            if (username in self.exclude_list):
                if (username != 'root'):
                    e_msg = ('Editing restricted user(%s) is not supported.' %
                             username)
                    handle_exception(Exception(e_msg), request)
            email = request.data.get('email', None)
            new_pw = request.data.get('password', None)
            shell = request.data.get('shell', None)
            public_key = self._validate_public_key(request)
            admin = request.data.get('admin', False)
            if (User.objects.filter(username=username).exists()):
                u = User.objects.get(username=username)
                if (admin is True):
                    if (u.user is None):
                        if (new_pw is None):
                            e_msg = ('password reset is required to enable admin '
                                     'access. please provide a new password')
                            handle_exception(Exception(e_msg), request)
                        auser = DjangoUser.objects.create_user(username,
                                                               None, new_pw)
                        auser.is_active = True
                        auser.save()
                        u.user = auser
                        u.save()
                    elif (new_pw is not None):
                        u.user.set_password(new_pw)
                        u.user.save()
                elif (u.user is not None):
                    auser = u.user
                    u.user = None
                    auser.delete()

                u.public_key = public_key
                if (email is not None and email != ''):
                    u.email = email
                if (shell is not None and shell != u.shell):
                    u.shell = shell
                u.save()

            sysusers = combined_users()
            suser = None
            for u in sysusers:
                if (u.username == username):
                    suser = u
                    if (new_pw is not None):
                        usermod(username, new_pw)
                        smbpasswd(username, new_pw)
                    if (shell is not None):
                        update_shell(username, shell)
                    if (public_key is not None):
                        add_ssh_key(username, public_key)
                    break
            if (suser is None):
                e_msg = ('User(%s) does not exist' % username)
                handle_exception(Exception(e_msg), request)

            return Response(SUserSerializer(suser).data)
Exemplo n.º 5
0
    def put(self, request, username):
        if username in self.exclude_list:
            if username != "root":
                e_msg = "Editing restricted user(%s) is not supported." % username
                handle_exception(Exception(e_msg), request)
        email = request.DATA.get("email", None)
        new_pw = request.DATA.get("password", None)
        shell = request.DATA.get("shell", None)
        public_key = self._validate_public_key(request)
        admin = request.DATA.get("admin", False)
        if User.objects.filter(username=username).exists():
            u = User.objects.get(username=username)
            if admin is True:
                if u.user is None:
                    if new_pw is None:
                        e_msg = "password reset is required to enable admin " "access. please provide a new password"
                        handle_exception(Exception(e_msg), request)
                    auser = DjangoUser.objects.create_user(username, None, new_pw)
                    auser.is_active = True
                    auser.save()
                    u.user = auser
                    u.save()
                elif new_pw is not None:
                    u.user.set_password(new_pw)
                    u.user.save()
            elif u.user is not None:
                auser = u.user
                u.user = None
                auser.delete()

            u.public_key = public_key
            if email is not None and email != "":
                u.email = email
            if shell is not None and shell != u.shell:
                u.shell = shell
            u.save()

        sysusers = combined_users()
        suser = None
        for u in sysusers:
            if u.username == username:
                suser = u
                if new_pw is not None:
                    usermod(username, new_pw)
                    smbpasswd(username, new_pw)
                if shell is not None:
                    update_shell(username, shell)
                if public_key is not None:
                    add_ssh_key(username, public_key)
                break
        if suser is None:
            e_msg = "User(%s) does not exist" % username
            handle_exception(Exception(e_msg), request)

        return Response(SUserSerializer(suser).data)
Exemplo n.º 6
0
    def put(self, request, username):
        with self._handle_exception(request):
            if username in self.exclude_list:
                if username != "root":
                    e_msg = ("Editing restricted user ({}) is not supported."
                             ).format(username)
                    handle_exception(Exception(e_msg), request)
            email = request.data.get("email", None)
            new_pw = request.data.get("password", None)
            shell = request.data.get("shell", None)
            public_key = self._validate_public_key(request)
            cur_public_key = None
            admin = request.data.get("admin", False)
            if User.objects.filter(username=username).exists():
                u = User.objects.get(username=username)
                if admin is True:
                    if u.user is None:
                        if new_pw is None:
                            e_msg = ("Password reset is required to "
                                     "enable admin access. Please provide "
                                     "a new password.")
                            handle_exception(Exception(e_msg), request)
                        auser = DjangoUser.objects.create_user(
                            username, None, new_pw)
                        auser.is_active = True
                        auser.save()
                        u.user = auser
                        u.full_clean()
                        u.save()
                    elif new_pw is not None:
                        u.user.set_password(new_pw)
                        u.user.save()
                else:
                    if u.user is not None:
                        auser = u.user
                        u.user = None
                        auser.delete()
                u.admin = admin
                if u.public_key is not None and u.public_key != public_key:
                    cur_public_key = u.public_key
                u.public_key = public_key
                if email is not None and email != "":
                    u.email = email
                if shell is not None and shell != u.shell:
                    u.shell = shell
                u.full_clean()
                u.save()

            sysusers = combined_users()
            suser = None
            for u in sysusers:
                if u.username == username:
                    suser = u
                    if new_pw is not None:
                        usermod(username, new_pw)
                        smbpasswd(username, new_pw)
                    if shell is not None:
                        update_shell(username, shell)
                    add_ssh_key(username, public_key, cur_public_key)
                    break
            if suser is None:
                e_msg = "User ({}) does not exist.".format(username)
                handle_exception(Exception(e_msg), request)

            return Response(SUserSerializer(suser).data)