mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2024-12-25 07:47:05 +00:00
Add support for a default quota value and allow setting quota when adding user
This commit is contained in:
parent
6de34b0464
commit
d1906bd055
@ -9,7 +9,7 @@ import auth, utils, multiprocessing.pool
|
|||||||
from mailconfig import get_mail_users, get_mail_users_ex, get_admins, add_mail_user, set_mail_password, remove_mail_user
|
from mailconfig import get_mail_users, get_mail_users_ex, get_admins, add_mail_user, set_mail_password, remove_mail_user
|
||||||
from mailconfig import get_mail_user_privileges, add_remove_mail_user_privilege
|
from mailconfig import get_mail_user_privileges, add_remove_mail_user_privilege
|
||||||
from mailconfig import get_mail_aliases, get_mail_aliases_ex, get_mail_domains, add_mail_alias, remove_mail_alias
|
from mailconfig import get_mail_aliases, get_mail_aliases_ex, get_mail_domains, add_mail_alias, remove_mail_alias
|
||||||
from mailconfig import set_mail_quota
|
from mailconfig import set_mail_quota, get_default_quota, validate_quota
|
||||||
env = utils.load_environment()
|
env = utils.load_environment()
|
||||||
|
|
||||||
auth_service = auth.KeyAuthService()
|
auth_service = auth.KeyAuthService()
|
||||||
@ -154,7 +154,7 @@ def mail_users():
|
|||||||
@authorized_personnel_only
|
@authorized_personnel_only
|
||||||
def mail_users_add():
|
def mail_users_add():
|
||||||
try:
|
try:
|
||||||
return add_mail_user(request.form.get('email', ''), request.form.get('password', ''), request.form.get('privileges', ''), env)
|
return add_mail_user(request.form.get('email', ''), request.form.get('password', ''), request.form.get('privileges', ''), request.form.get('quota', ''), env)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
return (str(e), 400)
|
return (str(e), 400)
|
||||||
|
|
||||||
@ -528,6 +528,24 @@ def privacy_status_set():
|
|||||||
utils.write_settings(config, env)
|
utils.write_settings(config, env)
|
||||||
return "OK"
|
return "OK"
|
||||||
|
|
||||||
|
@app.route('/system/default-quota', methods=["GET"])
|
||||||
|
@authorized_personnel_only
|
||||||
|
def default_quota_get():
|
||||||
|
return get_default_quota(env)
|
||||||
|
|
||||||
|
@app.route('/system/default-quota', methods=["POST"])
|
||||||
|
@authorized_personnel_only
|
||||||
|
def default_quota_set():
|
||||||
|
config = utils.load_settings(env)
|
||||||
|
try:
|
||||||
|
config["default-quota"] = validate_quota(request.form.get('default_quota'))
|
||||||
|
utils.write_settings(config, env)
|
||||||
|
|
||||||
|
except ValueError as e:
|
||||||
|
return ("ERROR: %s" % str(e), 400)
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
|
||||||
# MUNIN
|
# MUNIN
|
||||||
|
|
||||||
@app.route('/munin/')
|
@app.route('/munin/')
|
||||||
|
@ -298,7 +298,7 @@ def get_mail_domains(env, filter_aliases=lambda alias : True):
|
|||||||
+ [get_domain(address, as_unicode=False) for address, *_ in get_mail_aliases(env) if filter_aliases(address) ]
|
+ [get_domain(address, as_unicode=False) for address, *_ in get_mail_aliases(env) if filter_aliases(address) ]
|
||||||
)
|
)
|
||||||
|
|
||||||
def add_mail_user(email, pw, privs, env):
|
def add_mail_user(email, pw, privs, quota, env):
|
||||||
# validate email
|
# validate email
|
||||||
if email.strip() == "":
|
if email.strip() == "":
|
||||||
return ("No email address provided.", 400)
|
return ("No email address provided.", 400)
|
||||||
@ -324,6 +324,11 @@ def add_mail_user(email, pw, privs, env):
|
|||||||
validation = validate_privilege(p)
|
validation = validate_privilege(p)
|
||||||
if validation: return validation
|
if validation: return validation
|
||||||
|
|
||||||
|
try:
|
||||||
|
quota = validate_quota(quota)
|
||||||
|
except ValueError as e:
|
||||||
|
return (str(e), 400)
|
||||||
|
|
||||||
# get the database
|
# get the database
|
||||||
conn, c = open_database(env, with_connection=True)
|
conn, c = open_database(env, with_connection=True)
|
||||||
|
|
||||||
@ -332,8 +337,8 @@ def add_mail_user(email, pw, privs, env):
|
|||||||
|
|
||||||
# add the user to the database
|
# add the user to the database
|
||||||
try:
|
try:
|
||||||
c.execute("INSERT INTO users (email, password, privileges) VALUES (?, ?, ?)",
|
c.execute("INSERT INTO users (email, password, privileges, quota) VALUES (?, ?, ?, ?)",
|
||||||
(email, pw, "\n".join(privs)))
|
(email, pw, "\n".join(privs)), quota)
|
||||||
except sqlite3.IntegrityError:
|
except sqlite3.IntegrityError:
|
||||||
return ("User already exists.", 400)
|
return ("User already exists.", 400)
|
||||||
|
|
||||||
@ -376,6 +381,10 @@ def set_mail_quota(email, quota, env):
|
|||||||
conn.commit()
|
conn.commit()
|
||||||
return "OK"
|
return "OK"
|
||||||
|
|
||||||
|
def get_default_quota(env):
|
||||||
|
config = utils.load_settings(env)
|
||||||
|
return config.get("default-quota", '0')
|
||||||
|
|
||||||
def validate_quota(quota):
|
def validate_quota(quota):
|
||||||
# validate quota
|
# validate quota
|
||||||
quota = quota.strip().upper()
|
quota = quota.strip().upper()
|
||||||
|
@ -28,6 +28,10 @@
|
|||||||
<option value="admin">Administrator</option>
|
<option value="admin">Administrator</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="adduserQuota">Quota</label>
|
||||||
|
<input type="email" class="form-control" id="adduserQuota" placeholder="Quota">
|
||||||
|
</div>
|
||||||
<button type="submit" class="btn btn-primary">Add User</button>
|
<button type="submit" class="btn btn-primary">Add User</button>
|
||||||
</form>
|
</form>
|
||||||
<ul style="margin-top: 1em; padding-left: 1.5em; font-size: 90%;">
|
<ul style="margin-top: 1em; padding-left: 1.5em; font-size: 90%;">
|
||||||
@ -196,13 +200,15 @@ function do_add_user() {
|
|||||||
var email = $("#adduserEmail").val();
|
var email = $("#adduserEmail").val();
|
||||||
var pw = $("#adduserPassword").val();
|
var pw = $("#adduserPassword").val();
|
||||||
var privs = $("#adduserPrivs").val();
|
var privs = $("#adduserPrivs").val();
|
||||||
|
var quota = $("#adduserQuota").val();
|
||||||
api(
|
api(
|
||||||
"/mail/users/add",
|
"/mail/users/add",
|
||||||
"POST",
|
"POST",
|
||||||
{
|
{
|
||||||
email: email,
|
email: email,
|
||||||
password: pw,
|
password: pw,
|
||||||
privileges: privs
|
privileges: privs,
|
||||||
|
quota: quota
|
||||||
},
|
},
|
||||||
function(r) {
|
function(r) {
|
||||||
// Responses are multiple lines of pre-formatted text.
|
// Responses are multiple lines of pre-formatted text.
|
||||||
|
Loading…
Reference in New Issue
Block a user