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)
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)
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)
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)