def edit(self, id, **post): user = Users.first(id=id) if not user: cherrypy.session['flash'] = "404 User Not Found" raise cherrypy.HTTPRedirect('/users') meta, auth_meta = self.get_meta() try: data = user.get_meta_data() for k in data: if not k in auth_meta: continue auth_meta[k] = data[k] except: pass if post: fields = ['name', 'username', 'email', 'user_group'] data = self._get_data('user', fields, post) self._set_data(user, data) auth_meta = self._get_data('auth_meta', meta, post) user.set_meta_data(auth_meta) data['virt_auth_data'] = user.virt_auth_data fields.append('virt_auth_data') if user.update(data, fields): cherrypy.session['flash'] = "User successfully updated." raise cherrypy.HTTPRedirect('/users') env=dict(user = user, meta=meta, auth_meta=auth_meta) return self.render("/users/edit.html", crumbs=self.crumbs, **env)
def delete(self, id): jail = Users.first(id=id) msg = "The user could not be deleted." if jail: if Users.delete(jail): msg = "User deleted." cherrypy.session['flash'] = msg raise cherrypy.HTTPRedirect('/users')
def _login(self, post): fields = ['user.username', 'user.password'] for f in fields: if not f in post: cherrypy.session['flash'] = "Invalid form data." return False hash_password = Users.hash_password(post['user.password']) user = Users.first(username=post['user.username'], password=hash_password) if not user: cherrypy.session['flash'] = 'Invalid username or password.' return False creds = user.generate_auth() cherrypy.session['user.id'] = user.id cherrypy.session['user.group'] = user.user_group cherrypy.session['credentials'] = creds raise cherrypy.HTTPRedirect('/index')
def password(self, id, **post): user = Users.first(id=id) if not user: cherrypy.session['flash'] = '404 User Not Found' raise cherrypy.HTTPRedirect('/users') if post: fields = ['password', 'password_repeat'] data = self._get_data('user', fields, post) tmp = Users.new() self._set_data(tmp, data) if tmp.validate_password(): data['password'] = Users.hash_password(data['password']) user.update(data, ['password']) cherrypy.session['flash'] = 'Password updated.' raise cherrypy.HTTPRedirect('/users') cherrypy.session['flash'] = 'Password does not match.' user = Users.new(password="", id=id) env = dict(user=user) return self.render('/users/password.html', crumbs=self.crumbs, **env)