import os, cherrypy
from gettext import gettext as _
from auth import require, add_user
from plugin_mount import PagePlugin, FormPlugin
import cfg
from forms import Form
from util import *
from model import User
class users(PagePlugin):
order = 20 # order of running init in PagePlugins
def __init__(self, *args, **kwargs):
PagePlugin.__init__(self, *args, **kwargs)
self.register_page("sys.users")
self.register_page("sys.users.add")
self.register_page("sys.users.edit")
@cherrypy.expose
@require()
def index(self):
return self.fill_template(title="Manage Users and Groups", sidebar_right="""Add User
Edit Users""")
class add(FormPlugin, PagePlugin):
url = ["/sys/users/add"]
order = 30
sidebar_left = ''
sidebar_right = _("""Add User
Adding a user via this administrative interface might create a system user. For example, if you provide a user with ssh access, she will need a system account. If you don't know what that means, don't worry about it.
""") def main(self, username='', name='', email='', message=None, *args, **kwargs): form = Form(title="Add User", action=cfg.server_dir + "/sys/users/add/index", name="add_user_form", message=message) form.text_input(_("Username"), name="username", value=username) form.text_input(_("Full name"), name="name", value=name) form.text_input(_("Email"), name="email", value=email) form.text_input(_("Password"), name="password", type="password") form.submit(label=_("Create User"), name="create") return form.render() def process_form(self, username=None, name=None, email=None, password=None, **kwargs): msg = Message() error = add_user(username, password, name, email, False) if error: msg.text = error else: msg.add = _("%s saved." % username) cfg.log(msg.text) main = self.main(username, name, email, msg=msg.text) return self.fill_template(title="Manage Users and Groups", main=main, sidebar_left=self.sidebar_left, sidebar_right=self.sidebar_right) class edit(FormPlugin, PagePlugin): url = ["/sys/users/edit"] order = 35 sidebar_left = '' sidebar_right = _("""Edit UsersClick on a user's name to go to a screen for editing that user's account.
Delete UsersCheck the box next to a users' names and then click "Delete User" to remove users from %s and the %s system.
Deleting users is permanent!
""" % (cfg.product_name, cfg.box_name)) def main(self, msg=''): users = cfg.users.get_all() add_form = Form(title=_("Edit or Delete User"), action=cfg.server_dir + "/sys/users/edit", message=msg) add_form.html('DeleteCould not find a user with username of %s!
" % kwargs['username']) return self.fill_template(template="err", title=_("Unnown User"), main=main, sidebar_left=self.sidebar_left, sidebar_right=sidebar_right) main = _("""Edit User '%s'""" % u['username']) sidebar_right = '' return self.fill_template(title="Manage Users and Groups", main=main, sidebar_left=self.sidebar_left, sidebar_right=sidebar_right)