Esempio n. 1
0
    def initialize(self):
        conf = WechatConf(
            token = config.cfg_get("token"),
            appid=config.cfg_get("appid"),
            appsecret = config.cfg_get("appsecret"),
            encrypt_mode = config.cfg_get("encrypt_mode"),
            encoding_aes_key = config.cfg_get("encoding_aes_key")
        )
	
        self._wechat = WechatBasic(conf=conf)
        config.init_logger()
Esempio n. 2
0
def render_page(htmlfile):
    log(4, "template page: %s" % htmlfile)
    page = get_page(htmlfile)
    if page == None:
        return ("NOT FOUND", 404, {})
    else:
        if current_user.has_groups(page.ACL):
            return render_template(htmlfile, title=cfg_get("AppTitle"))
        else:
            return ("FORBIDDEN", 403, {})
Esempio n. 3
0
def handle_users():
    is_admin = current_user.has_group("admins")
    
    if request.method == "POST":
        action = get_dict_default(request.form, "action", "")
        name = get_dict_default(request.form, "user", "")
        pwd1 = get_dict_default(request.form, "password1", "")
        pwd2 = get_dict_default(request.form, "password2", "")
        groups = get_dict_default(request.form, "groups", "")
        
        if action == "create" or action == "update":
            if name != "" and pwd1 != "" and pwd2 != "":
                if (not is_admin) and (name != current_user.name):
                    flash("Operation permitted only to Administrators", "error")
                    return render_template("users.html", title=cfg_get("AppTitle"), users=get_users(is_admin))
                else:
                    if pwd1 != pwd2:
                        flash("Passwords are different!", "error")
                        return render_template("users.html", title=cfg_get("AppTitle"), users=get_users(is_admin))
                    else:
                        user = create_user(name, pwd1)
                        if is_admin:
                            grps = groups.split(',')
                            grps = map(stripstr, grps)
                        else:
                            grps = current_user.groups
                        for grp in grps:
                            user.add_group(grp)
                        add_or_modify_user(user)
                        if action == "create":
                            flash("User '%s' created" % name, "info")
                        else:
                            flash("User '%s' modified" % name, "info")
                        return render_template("users.html", title=cfg_get("AppTitle"), users=get_users(is_admin))
            else:
                flash("All fields must be compiled!", "error")
                return render_template("users.html", title=cfg_get("AppTitle"), users=get_users(is_admin))
        elif action == "delete":
            if name != "":
                if (not is_admin) and (name != current_user.name):
                    flash("Operation permitted only to Administrators", "error")
                    return render_template("users.html", title=cfg_get("AppTitle"), users=get_users(is_admin))
                else:
                    del_user(name)
                    flash("User '%s' deleted" % name, "info")
                    return render_template("users.html", title=cfg_get("AppTitle"), users=get_users(is_admin))
            else:
                flash("User name missing!" % name, "error")
                return render_template("users.html", title=cfg_get("AppTitle"), users=get_users(is_admin))
        else:
            return ("Internal Server Error", 500, {})
    else:
        return render_template("users.html", title=cfg_get("AppTitle"), users=get_users(is_admin))
Esempio n. 4
0
def home():
    title = cfg_get("AppTitle")
    pages = []
    
    is_admin = current_user.has_group("admins")
    if is_admin:
        pages.append((url_for('handle_users'), "Manage Users"))
    
    pg = get_pages()
    for p in pg:
        page = get_page(p)
        if current_user.has_groups(page.ACL):
            pages.append((url_for('render_page', htmlfile=page.template), page.description))
    
    return render_template('home.html', title=title, pages=pages)
Esempio n. 5
0
def init_websrv(base_path):
    global web_app
    global login_manager
    global dir_scripts
    
    dir_scripts = os.path.join(base_path, "scripts")
    app_name = cfg_get("AppName")
    #web_app = Flask(appname)
    web_app.secret_key = os.urandom(16)
    #login_manager = LoginManager()
    login_manager.init_app(web_app)
    login_manager.login_view = "/login"
    #set static directory
    web_app.static_folder = os.path.join(base_path, "static")
    #set template directory
    dir_tmpl = os.path.join(base_path, "templates")
    tmpl_loader = jinja2.ChoiceLoader([ jinja2.FileSystemLoader([dir_tmpl]) ])
    web_app.jinja_loader = tmpl_loader
Esempio n. 6
0
def login():
    if request.method == "POST":
        name = request.form['username']
        passw = request.form['password']
        user = get_user(name)
        
        if user == None:
            flash('Wrong User!', 'error')
            return redirect("/login")
        else:
            user.verify_password(passw)
            if user.is_authenticated:
                login_user(user)
                return redirect("/")
            else:
                flash('Wrong Password!', 'error')
                return redirect("/login")
    else:
        return render_template("login.html", title=cfg_get("AppTitle"))