mirror of https://github.com/JohnHammond/CTFd.git
Preventing team name changes
parent
5e24fba459
commit
f63b894258
|
@ -58,9 +58,15 @@ def init_admin(app):
|
||||||
try:
|
try:
|
||||||
view_challenges_unregistered = bool(request.form.get('view_challenges_unregistered', None))
|
view_challenges_unregistered = bool(request.form.get('view_challenges_unregistered', None))
|
||||||
prevent_registration = bool(request.form.get('prevent_registration', None))
|
prevent_registration = bool(request.form.get('prevent_registration', None))
|
||||||
|
prevent_name_change = bool(request.form.get('prevent_name_change', None))
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
view_challenges_unregistered = None
|
view_challenges_unregistered = None
|
||||||
prevent_registration = None
|
prevent_registration = None
|
||||||
|
prevent_name_change = None
|
||||||
|
finally:
|
||||||
|
view_challenges_unregistered = set_config('view_challenges_unregistered', view_challenges_unregistered)
|
||||||
|
prevent_registration = set_config('prevent_registration', prevent_registration)
|
||||||
|
prevent_name_change = set_config('prevent_name_change', prevent_name_change)
|
||||||
|
|
||||||
ctf_name = set_config("ctf_name", request.form.get('ctf_name', None))
|
ctf_name = set_config("ctf_name", request.form.get('ctf_name', None))
|
||||||
mg_api_key = set_config("mg_api_key", request.form.get('mg_api_key', None))
|
mg_api_key = set_config("mg_api_key", request.form.get('mg_api_key', None))
|
||||||
|
@ -72,16 +78,8 @@ def init_admin(app):
|
||||||
db_end = Config.query.filter_by(key='end').first()
|
db_end = Config.query.filter_by(key='end').first()
|
||||||
db_end.value = end
|
db_end.value = end
|
||||||
|
|
||||||
db_view_challenges_unregistered = Config.query.filter_by(key='view_challenges_unregistered').first()
|
|
||||||
db_view_challenges_unregistered.value = view_challenges_unregistered
|
|
||||||
|
|
||||||
db_prevent_registration = Config.query.filter_by(key='prevent_registration').first()
|
|
||||||
db_prevent_registration.value = prevent_registration
|
|
||||||
|
|
||||||
db.session.add(db_start)
|
db.session.add(db_start)
|
||||||
db.session.add(db_end)
|
db.session.add(db_end)
|
||||||
db.session.add(db_view_challenges_unregistered)
|
|
||||||
db.session.add(db_prevent_registration)
|
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return redirect('/admin/config')
|
return redirect('/admin/config')
|
||||||
|
@ -114,12 +112,17 @@ def init_admin(app):
|
||||||
if not prevent_registration:
|
if not prevent_registration:
|
||||||
set_config('prevent_registration', None)
|
set_config('prevent_registration', None)
|
||||||
|
|
||||||
|
prevent_name_change = get_config('prevent_name_change') == '1'
|
||||||
|
if not prevent_name_change:
|
||||||
|
set_config('prevent_name_change', None)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
db.session.close()
|
db.session.close()
|
||||||
|
|
||||||
return render_template('admin/config.html', ctf_name=ctf_name, start=start, end=end,
|
return render_template('admin/config.html', ctf_name=ctf_name, start=start, end=end,
|
||||||
view_challenges_unregistered=view_challenges_unregistered,
|
view_challenges_unregistered=view_challenges_unregistered,
|
||||||
prevent_registration=prevent_registration, do_api_key=do_api_key, mg_api_key=mg_api_key)
|
prevent_registration=prevent_registration, do_api_key=do_api_key, mg_api_key=mg_api_key,
|
||||||
|
prevent_name_change=prevent_name_change)
|
||||||
|
|
||||||
@app.route('/admin/pages', defaults={'route': None}, methods=['GET', 'POST'])
|
@app.route('/admin/pages', defaults={'route': None}, methods=['GET', 'POST'])
|
||||||
@app.route('/admin/pages/<route>', methods=['GET', 'POST'])
|
@app.route('/admin/pages/<route>', methods=['GET', 'POST'])
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from flask import current_app as app, render_template, render_template_string, request, redirect, abort, jsonify, json as json_mod, url_for, session
|
from flask import current_app as app, render_template, render_template_string, request, redirect, abort, jsonify, json as json_mod, url_for, session
|
||||||
from CTFd.utils import authed, ip2long, long2ip, is_setup, validate_url
|
from CTFd.utils import authed, ip2long, long2ip, is_setup, validate_url, get_config
|
||||||
from CTFd.models import db, Teams, Solves, Challenges, WrongKeys, Keys, Tags, Files, Tracking, Pages, Config
|
from CTFd.models import db, Teams, Solves, Challenges, WrongKeys, Keys, Tags, Files, Tracking, Pages, Config
|
||||||
|
|
||||||
from jinja2.exceptions import TemplateNotFound
|
from jinja2.exceptions import TemplateNotFound
|
||||||
|
@ -158,10 +158,12 @@ def init_views(app):
|
||||||
errors.append("That doesn't look like a valid URL")
|
errors.append("That doesn't look like a valid URL")
|
||||||
|
|
||||||
if len(errors) > 0:
|
if len(errors) > 0:
|
||||||
return render_template('profile.html', name=name, email=email, website=website, affiliation=affiliation, country=country, errors=errors)
|
return render_template('profile.html', name=name, email=email, website=website,
|
||||||
|
affiliation=affiliation, country=country, errors=errors)
|
||||||
else:
|
else:
|
||||||
team = Teams.query.filter_by(id=session['id']).first()
|
team = Teams.query.filter_by(id=session['id']).first()
|
||||||
team.name = name
|
if not get_config('prevent_name_change'):
|
||||||
|
team.name = name
|
||||||
team.email = email
|
team.email = email
|
||||||
session['username'] = name
|
session['username'] = name
|
||||||
|
|
||||||
|
@ -180,6 +182,8 @@ def init_views(app):
|
||||||
website = user.website
|
website = user.website
|
||||||
affiliation = user.affiliation
|
affiliation = user.affiliation
|
||||||
country = user.country
|
country = user.country
|
||||||
return render_template('profile.html', name=name, email=email, website=website, affiliation=affiliation, country=country)
|
prevent_name_change = get_config('prevent_name_change')
|
||||||
|
return render_template('profile.html', name=name, email=email, website=website, affiliation=affiliation,
|
||||||
|
country=country, prevent_name_change=prevent_name_change)
|
||||||
else:
|
else:
|
||||||
return redirect('/login')
|
return redirect('/login')
|
||||||
|
|
|
@ -42,6 +42,11 @@
|
||||||
<label for="prevent_registration">Prevent public registration</label>
|
<label for="prevent_registration">Prevent public registration</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<input id="prevent_name_change" name="prevent_name_change" type="checkbox" {% if prevent_name_change %}checked{% endif %}>
|
||||||
|
<label for="prevent_name_change">Prevent Team Name Changes</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<button class="radius" type='submit'>Update</button>
|
<button class="radius" type='submit'>Update</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<form method="POST">
|
<form method="POST">
|
||||||
<span>Team Name</span>
|
<span>Team Name</span>
|
||||||
<input class="radius" type="text" name="name" placeholder="Team Name" value="{{name}}">
|
<input class="radius" type="text" name="name" placeholder="Team Name" value="{{name}}" {% if prevent_name_change %}disabled{% endif %}>
|
||||||
|
|
||||||
<span>Email Address</span>
|
<span>Email Address</span>
|
||||||
<input class="radius" type="text" name="email" placeholder="Email Address" value="{{email}}">
|
<input class="radius" type="text" name="email" placeholder="Email Address" value="{{email}}">
|
||||||
|
|
Loading…
Reference in New Issue