Skip to content
Snippets Groups Projects
Commit 5fdec0e0 authored by kaiyou's avatar kaiyou
Browse files

Constraint profile format with regex, fix #36

parent 173f8d66
No related branches found
No related tags found
No related merge requests found
......@@ -164,6 +164,7 @@ class Service(db.Model):
description = db.Column(db.String())
policy = db.Column(db.String(255))
max_profiles = db.Column(db.Integer(), nullable=False, default=1)
profile_regex = db.Column(db.String(255))
same_username = db.Column(db.Boolean(), nullable=False, default=False)
config = db.Column(mutable.MutableDict.as_mutable(JSONEncoded))
......
......@@ -2,6 +2,7 @@ from hiboo.profile import blueprint, forms
from hiboo import models, utils, security
from hiboo import user as hiboo_user
from passlib import context, hash
from wtforms import validators
import flask
import flask_login
......@@ -48,6 +49,10 @@ def create(service_uuid, create_for=False):
status = models.Profile.REQUEST
# Actually display the form
form = forms.ProfileForm()
if service.profile_regex:
form.username.validators.append(
validators.Regexp("^{}$".format(service.profile_regex)),
)
if service.same_username:
form.username.data = user.username
form.username.render_kw = {"readonly": True}
......
......@@ -16,5 +16,6 @@ class ServiceForm(flask_wtf.FlaskForm):
choices=list(models.Service.POLICIES.items()))
max_profiles = fields.IntegerField(_('Maximum profile count'),
[validators.NumberRange(1, 1000)])
profile_regex = fields.StringField(_('Profile usenrame regex'))
same_username = fields.BooleanField(_('Disable per-profile username'))
submit = fields.SubmitField(_('Submit'))
""" Set a regex for constraining profile username
Revision ID: ccae1d6b9c13
Revises: ebc103f8bc5e
Create Date: 2020-03-18 11:30:52.611835
"""
from alembic import op
import sqlalchemy as sa
import hiboo
revision = 'ccae1d6b9c13'
down_revision = 'ebc103f8bc5e'
branch_labels = None
depends_on = None
def upgrade():
with op.batch_alter_table('service') as batch_op:
batch_op.add_column(sa.Column('profile_regex', sa.String(length=255), nullable=True))
def downgrade():
with op.batch_alter_table('service') as batch_op:
batch_op.drop_column('profile_regex')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment