2018-10-27 22:01:01 +00:00
{% extends 'user/master.twig' %}
{% from 'macros.twig' import container_title , pagination %}
2018-11-19 23:13:48 +00:00
{% from 'user/macros.twig' import user_session , user_login_attempt , user_account_log %}
2018-10-27 22:01:01 +00:00
{% from '_layout/input.twig' import input_hidden , input_csrf , input_text %}
{% set title = 'Settings' %}
2018-11-19 23:48:09 +00:00
{% set menu = {
2018-12-28 05:03:42 +00:00
'account': ['<i class="fas fa-user fa-fw"></i> Account', true],
'roles': ['<i class="fas fa-user-check"></i> Roles', not is_restricted],
'sessions': ['<i class="fas fa-key fa-fw"></i> Sessions', true],
'login-attempts': ['<i class="fas fa-user-lock fa-fw"></i> Login Attempts', true],
'account-log': ['<i class="fas fa-file-alt fa-fw"></i> Account Log', true],
2018-11-19 23:48:09 +00:00
} %}
2018-10-27 22:01:01 +00:00
{% block content %}
2018-10-29 19:12:06 +00:00
{% if errors | length > 0 %}
2018-10-29 17:55:10 +00:00
<div class="warning">
<div class="warning__content">
2018-10-29 19:12:06 +00:00
{% for error in errors %}
2018-10-29 17:55:10 +00:00
{{ error }}
{% endfor %}
2018-10-27 22:01:01 +00:00
</div>
2018-10-29 17:55:10 +00:00
</div>
{% endif %}
2018-10-27 22:01:01 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__wrapper">
<div class="settings__wrapper__sidebar">
<div class="container settings__container settings__wrapper__menu">
{{ container_title ( 'Settings' ) }}
2018-10-27 22:01:01 +00:00
2018-12-28 05:03:42 +00:00
{% for id , item in menu %}
{% if item [ 1 ] %}
<a href="# {{ id }} " class="settings__wrapper__link">
{{ item [ 0 ] | raw }}
</a>
{% endif %}
2018-11-19 23:48:09 +00:00
{% endfor %}
2018-10-29 17:55:10 +00:00
</div>
2018-11-19 23:48:09 +00:00
</div>
2018-10-28 02:02:00 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__wrapper__content">
<form action="" method="post" class="container settings__container" id="account">
2018-12-27 02:59:57 +00:00
{{ container_title ( '<i class="fas fa-user fa-fw"></i> Account' ) }}
2018-11-19 23:48:09 +00:00
{{ input_csrf ( 'settings' ) }}
<div class="settings__description">
<p>Here you can change your e-mail address and/or your password, please make sure your e-mail is accurate and your password is strong in order to protect your account. For convenience your current e-mail address is displayed. You are required to verify yourself by entering your current password to change either value.</p>
2018-10-29 17:55:10 +00:00
</div>
2018-10-27 22:01:01 +00:00
2018-11-19 23:48:09 +00:00
{% if disable_account_options %}
<div class="settings__disabled">
<div class="settings__disabled__notice">
E-mail and password changing is only available on the main site for stability reasons.
2018-10-29 17:55:10 +00:00
</div>
2018-11-19 23:48:09 +00:00
<div class="settings__disabled__options">
<a class="input__button" href="https://flashii.net/settings.php">
<i class="fas fa-external-link-square-alt fa-fw"></i> Change E-mail or Password on Flashii
</a>
</div>
</div>
{% else %}
<div class="settings__account">
<div class="settings__account__section">
<label class="settings__account__input">
<div class="settings__account__title">
New e-mail address
</div>
{{ input_text ( 'email[new]' , 'settings__account__input' , '' , 'email' , current_email ) }}
</label>
<label class="settings__account__input">
<div class="settings__account__title">
Confirm new e-mail address
</div>
{{ input_text ( 'email[confirm]' , 'settings__account__input' , '' , 'email' ) }}
</label>
2018-10-29 17:55:10 +00:00
</div>
2018-10-28 02:02:00 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__account__section">
<label class="settings__account__input">
<div class="settings__account__title">
New password
</div>
{{ input_text ( 'password[new]' , 'settings__account__input' , '' , 'password' ) }}
</label>
<label class="settings__account__input">
<div class="settings__account__title">
Confirm new password
</div>
{{ input_text ( 'password[confirm]' , 'settings__account__input' , '' , 'password' ) }}
</label>
2018-10-27 22:01:01 +00:00
</div>
2018-10-29 17:55:10 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__account__section settings__account__section--confirm">
<label class="settings__account__input">
<div class="settings__account__title">
Current password
</div>
{{ input_text ( 'current_password' , 'settings__account__input' , '' , 'password' ) }}
</label>
<div class="settings__account__buttons">
<button class="input__button settings__account__button">Update</button>
<button class="input__button settings__account__button" type="reset">Reset</button>
</div>
</div>
2018-10-27 22:01:01 +00:00
</div>
2018-11-19 23:48:09 +00:00
{% endif %}
</form>
2018-11-17 20:37:18 +00:00
2018-12-28 05:03:42 +00:00
{% if not is_restricted %}
<div class="container settings__container" id="roles">
{{ container_title ( '<i class="fas fa-user-check fa-fw"></i> Roles' ) }}
2018-11-17 20:37:18 +00:00
2018-12-28 05:03:42 +00:00
<div class="settings__description">
<p>This is a listing of the user roles you're a part of, you can select which you want to leave or which one you want to boast as your main role which will change your username colour accordingly.</p>
</div>
2018-11-19 23:48:09 +00:00
2018-12-28 05:03:42 +00:00
<div class="settings__role__collection">
{% for role in user_roles %}
{% set is_display_role = user_display_role == role .role_id %}
<div class="settings__role" style=" {{ role .role_colour | html_colour ( '--accent-colour' ) }} ">
<div class="settings__role__content">
<div class="settings__role__name">
{{ role .role_name }}
</div>
<div class="settings__role__description">
{{ role .role_description }}
</div>
<form class="settings__role__options" method="post" action="/settings.php">
{{ input_csrf ( 'settings' ) }}
{{ input_hidden ( 'role[id]' , role .role_id ) }}
<button class="settings__role__option {% if is_display_role %} settings__role__option--disabled {% endif %} "
name="role[mode]" value="display" title="Set this as your display role"
{% if is_display_role %} disabled {% endif %} >
<i class="far {{ is_display_role ? 'fa-check-square' : 'fa-square' }} "></i>
</button>
<button class="settings__role__option {% if not role .role_can_leave %} settings__role__option--disabled {% endif %} "
name="role[mode]" value="leave" title="Leave this role"
onclick="return confirm('Are you sure you want to remove {{ role .role_name | replace ( { "'" : "\'" } ) }} from your account?')"
{% if not role .role_can_leave %} disabled {% endif %} >
<i class="fas fa-times-circle"></i>
</button>
</form>
2018-11-19 23:48:09 +00:00
</div>
</div>
2018-12-28 05:03:42 +00:00
{% endfor %}
</div>
2018-11-17 20:37:18 +00:00
</div>
2018-12-28 05:03:42 +00:00
{% endif %}
2018-11-16 17:54:56 +00:00
2018-11-19 23:48:09 +00:00
<div class="container settings__container" id="sessions">
2018-12-27 02:59:57 +00:00
{{ container_title ( '<i class="fas fa-key fa-fw"></i> Sessions' ) }}
2018-11-19 23:48:09 +00:00
{% set spagination = pagination (
sessions.amount,
sessions.take,
sessions.offset,
2018-12-01 12:20:21 +00:00
url_construct('/settings.php', {
2018-11-19 23:48:09 +00:00
'logins[offset]': logins.offset,
'logins[take]': logins.take == 15 ? 0 : logins.take,
'logs[offset]': logs.offset,
'logs[take]': logs.take == 15 ? 0 : logs.take,
'sessions[take]': sessions.take == 15 ? 0 : sessions.take,
}),
false,
2018-12-01 12:20:21 +00:00
'sessions[offset]',
true,
null,
'#sessions'
2018-11-19 23:48:09 +00:00
) %}
<div class="settings__description">
<p>These are the active logins to your account, clicking the Kill button will force a logout on that session. Your current login is highlighted with a different colour so you don't accidentally force yourself to logout.</p>
</div>
2018-10-27 22:01:01 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__sessions">
<form action="" method="post" class="settings__sessions__all">
{{ input_csrf ( 'settings' ) }}
{{ input_hidden ( 'session' , 'all' ) }}
2018-10-28 02:02:00 +00:00
2018-11-19 23:48:09 +00:00
<button class="input__button">
<i class="fas fa-bomb"></i> Kill ALL active sessions
</button>
</form>
2018-10-28 02:02:00 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__sessions__pagination">
{{ spagination }}
</div>
2018-10-28 02:02:00 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__sessions__list">
{% for session in sessions .list %}
{{ user_session ( session , session .session_id == sessions .active ) }}
{% endfor %}
</div>
2018-10-28 02:02:00 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__sessions__pagination">
{{ spagination }}
</div>
</div>
2018-10-28 02:02:00 +00:00
</div>
2018-10-29 17:55:10 +00:00
2018-11-19 23:48:09 +00:00
<div class="container settings__container" id="login-attempts">
2018-12-27 02:59:57 +00:00
{{ container_title ( '<i class="fas fa-user-lock fa-fw"></i> Login Attempts' ) }}
2018-11-19 23:48:09 +00:00
{% set lhpagination = pagination (
logins.amount,
logins.take,
logins.offset,
2018-12-01 12:20:21 +00:00
url_construct('/settings.php', {
2018-11-19 23:48:09 +00:00
'logins[take]': logins.take == 15 ? 0 : logins.take,
'logs[offset]': logs.offset,
'logs[take]': logs.take == 15 ? 0 : logs.take,
'sessions[offset]': sessions.offset,
'sessions[take]': sessions.take == 15 ? 0 : sessions.take,
}),
false,
2018-12-01 12:20:21 +00:00
'logins[offset]',
true,
null,
'#login-attempts'
2018-11-19 23:48:09 +00:00
) %}
<div class="settings__description">
<p>These are all the login attempts to your account. If any attempt that you don't recognise is marked as successful your account may be compromised, ask a staff member for advice in this case.</p>
</div>
2018-10-28 02:02:00 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__login-attempts">
<div class="settings__login-attempts__pagination">
{{ lhpagination }}
</div>
2018-10-27 22:01:01 +00:00
2018-11-19 23:48:09 +00:00
{% for attempt in logins .list %}
{{ user_login_attempt ( attempt ) }}
{% endfor %}
2018-10-28 02:02:00 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__login-attempts__pagination">
{{ lhpagination }}
</div>
</div>
2018-11-19 22:48:01 +00:00
</div>
2018-10-29 17:55:10 +00:00
2018-11-19 23:48:09 +00:00
<div class="container settings__container" id="account-log">
2018-12-27 02:59:57 +00:00
{{ container_title ( '<i class="fas fa-file-alt fa-fw"></i> Account Log' ) }}
2018-11-19 23:48:09 +00:00
{% set alpagination = pagination (
logs.amount,
logs.take,
logs.offset,
2018-12-01 12:20:21 +00:00
url_construct('/settings.php', {
2018-11-19 23:48:09 +00:00
'logins[offset]': logins.offset,
'logins[take]': logins.take == 15 ? 0 : logins.take,
'logs[take]': logs.take == 15 ? 0 : logs.take,
'sessions[offset]': sessions.offset,
'sessions[take]': sessions.take == 15 ? 0 : sessions.take,
}),
false,
2018-12-01 12:20:21 +00:00
'logs[offset]',
true,
null,
'#account-log'
2018-11-19 23:48:09 +00:00
) %}
<div class="settings__description">
<p>This is a log of all "important" actions that have been done using your account for your review. If you notice anything strange, please alert the staff.</p>
</div>
2018-10-28 02:02:00 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__account-logs">
<div class="settings__account-logs__pagination">
{{ alpagination }}
</div>
2018-10-27 22:01:01 +00:00
2018-11-19 23:48:09 +00:00
{% for log in logs .list %}
{{ user_account_log ( log , logs .strings ) }}
{% endfor %}
2018-10-27 22:01:01 +00:00
2018-11-19 23:48:09 +00:00
<div class="settings__account-logs__pagination">
{{ alpagination }}
</div>
</div>
2018-11-19 23:13:48 +00:00
</div>
2018-10-27 22:01:01 +00:00
</div>
2018-10-29 17:55:10 +00:00
</div>
2018-10-27 22:01:01 +00:00
{% endblock %}