password reset files use UTC always, which I did not realize when
writing the password reset handler as the UK uses UTC and we weren't in
daylight savings time. The expiry time is now correctly handled as UTC.
An environment is no longer initialised for every email construction,
instead the templates are loaded directly.
A bunch of options can now be changed without a restart as the config is
now guaranteed to be reloaded on change through the use of a RELOADCONFIG environment variable.
multi-use invites will have a set limit of how many times they can be
used. They can also be set to have no limit. An additional menu is
planned for multi use invites to see when they have been used, and by
who.
The admin can switch between the two default themes without a page
reload, with a nice animation (on small screens). Preference is stored
as a cookie, so the default theme setting will still apply to others.
The grabbing of dependencies and compilation of SCSS can now simply be
done with a:
poetry run task compile-css
before a:
poetry build
When building from source. The issue where the .gitignore had to be
removed before building has been fixed, too.
Now uses a customized bootstrap that looks something like Jellyfin. Some
small ui changes were needed. This be overridden by downloading bs5's css and using the custom_css
option if you don't like it. sass file is included for your own modification. Changes made to master have been added also.
live reloading was intended for previous release, but needed some
tweaking. Settings that still require a restart are marked with an R.
Fixed issue where default values weren't being filled in on reload of
config that broke emails if settings were changed at all.
Currently all setting changes require a restart to apply, so there's a
bit of commented out code that i implemented before i realized.
Still needs tooltips for each setting.
Added option email/no_username to disable username input on form, and
instead use the provided email address as the username. Also added
missing 'packaging' dep from pevious update.
Automatically fixes '*ProviderId' in user templates for versions of
Jellyfin >= 10.6.0. Removed unnecessary configparser dependency, the one
actually used is part of python. jf_api now has an info attribute.
The dependency on 'secrets' has been removed, as I realized that the
cryptographic 'secrets' package is included in python, and the one on
PyPI was related to LDAP. This the issues with python-ldap on some
systems no longer exist.
setup.py has been removed, and Poetry is now used to package for
install. This fixed an issue i had with uploading to PyPI, so one can
now run 'pip install jellyfin-accounts' to install.
user_template and other files are now accessed via JSONStorage, which
has dictionary like attributes for each file which can be used like a
dictionary, without the need to manually read and write the file. This
was done so that other storage types (e.g a database) can be added in
future.
--get_policy is now --get_defaults, as it now allows you to store a
default user configuration and displayPreferences, which define the
layout of the home screen. It can also now display non publicly visible
accounts.
Originally i loaded the requirements through calling the web api in
javascript, but decided to switch it to jinja as i only recently found
out its capable of stuff more complicated than replacing strings.
jf_api now caches the list of users, only fetching new data if the cache
is more than 30 minutes old. Also remove the pointless tempJF with an
instance named auth_jf since jf_api can now handle multiple
authentications.
Originally i switched this to 'created' because of a Windows issue someone was
having, but I believe it was something else i'd done that fixed it.
Using 'created' also meant multiple password resets for a user wouldn't
be registered, as jellyfin would just overwrite the existing file.
Hopefully this doesn't break anything.
As many services don't support full encryption, there is now an
encryption option in the [smtp] section, allowing you to choose between
ssl_tls and starttls.
The new jellyfin_login and admin_only allow anyone use their username and
password from jellyfin to login to the admin page, and restrict this to jellyfin
admins only, respectively.
Pressing the user settings button brings up a list of all jellyfin
users, and allows you to add or change their stored email addresses.
Additionally, changed emails.json to use user ID instead of username.
The program automatically converts the file to the new format at start.
The admin page now has the option to send an invite to an email address.
Since there are now two email types (invites and pw resets), the new
sections have been added to config.ini, and email_template and
email_plaintext have been renamed to email_html and email_text
respectively.
Invites and the generate invite form are now displayed as cards. Invite
codes are displayed in a monospace font so they are always aligned with
eachother. The delete button is now inline with the rest of the text.
Fixed an issue where some criteria on the form page wouldn't change to
red or green when one set one of them to 0 in the config. Also added a
lowercase option.
Added an extra debugging message to tell the file being read for a
password reset, and changed watchdog form using 'created' events to
'modified', otherwise there may be issues where the file is read before
it is fully written.
Password validation added, configurable under the [password_validation]
section in config.ini. Each criterion is displayed next to the form, in
red or green depending on whether the password passes it. form.html now
looks different because of it, whether it is enabled or disabled. An
error message is now displayed if the user already exists.