228 Commits

Author SHA1 Message Date
Sunil Mohan Adapa
2c204429c6
Remove width management for forms
Now all forms will uniformly occupy the full width of the available
row.  Bootstrap originally designed forms this way.  However, we were
setting restricted widths on forms as they were too wide.  With the new
fixed container layout this is no longer necessary.
2016-09-11 13:14:57 -04:00
Sunil Mohan Adapa
5f94d6489f
users: Update the SSH set key error message
In a following pull request, we are expected to solve the cache timing
issue.  So, show a generic error message instead of one that suggests a
timing problem.
2016-08-23 21:37:51 +05:30
James Valleroy
d2950d9c5f
users: Display error message if unable to set SSH keys 2016-08-23 21:37:41 +05:30
Sunil Mohan Adapa
b7cbc56f8a
users: Fix checking restricted usernames
When editing an existing user, error is being thrown due to restricted
usernames check.  This is due to the username matching existing
username.

Also:

- Raise the validation error on the field instead of the entire form.

- Send error code along with validation error message.

- End the validation error message with a full stop for consistency.
2016-08-16 12:31:52 -04:00
Sunil Mohan Adapa
fff0a6c562
users: Fix editing users without SSH keys
When SSH keys are not available for a user, the current user edit form
errors out.  Fix this by ignoring ssh key load errors.
2016-08-12 16:10:32 -04:00
Sunil Mohan Adapa
e719966c4b
users: Refactor valid user name checking for reuse
- Supress output from getent

- More accurate message
2016-08-12 19:32:19 +05:30
James Valleroy
c8c6bc377b
users: Add list of restricted usernammes
List is derived from optional services installed.
2016-08-12 18:48:16 +05:30
James Valleroy
3a69958165
users: Avoid username conflicts with system users
When creating or renaming a user, check if the new username is in use by
any system user.
2016-08-12 18:47:52 +05:30
Sunil Mohan Adapa
18996b5c56
Import urlresolvers from django.urls
In Django 1.10, django.core.urlresolvers is available from
django.urls. Use it.
2016-08-11 18:03:00 -04:00
James Valleroy
956416ef37
Configure users module packages after installation
Preseeding settings with debconf won't have any effect if the packages
are already installed. Instead, provide an override database to
dpkg-reconfigure.
2016-07-30 08:49:22 +05:30
Sunil Mohan Adapa
5f548a9e36
packages: Make modules declare managed packages
This can then be used by a privileged action to verify that packages
requested for installation are in fact valid.  This slightly improves
security of those privileged actions.
2016-06-11 12:11:32 -04:00
Sunil Mohan Adapa
ad61028a3a
menu: Sort menu items for all locales
Currently menu items are shown in alphabetical order in applications and
no clear order in system configuration.  This is done using static
weights for menu items based on English names that does not work for
other locales.

Sorting can't be done at the time of adding menu items as users of
multiple locales may use the interface at the same time.

Implement a sorting mechanism based on existing order as well as labels
of menu item.  This allows the flexiblity of grouping menu items in
future as it may be need for system configuration.  In case of help menu

Remove sort order for all modules except for help menu as here we want
that specific order.
2016-06-06 17:44:59 -04:00
James Valleroy
f01575e2ea
Move ldap setup from freedombox-setup to plinth. 2016-05-21 16:06:18 -04:00
Sunil Mohan Adapa
f04e1c1657
Minor PEP8 & spelling fixes in various modules 2016-02-28 19:38:53 +05:30
Sunil Mohan Adapa
bee0260af7
users: Use new setup mechanism 2016-02-13 13:52:22 +05:30
Sunil Mohan Adapa
7f4c5f7410
Make app names as module identifiers
- The last part of the module import path is the module name.  This also
  becomes the Django app name.  Apps names have to be unique.  Hence,
  there is no scope for two different modules with same name but
  different load path to exist in the project.

- Most uses of list of loaded modules are dealing with app names instead
  of full module load path.  This is due to the fact that Django deals
  with app names and not module paths.

- It is also somewhat clumsy to access a loaded module as we are
  re-importing every time to get access module.

- Simplify all of the above by using app names are module identifiers
  and maintaing an ordered dictionary of app names to loadded modules.

- Remove unused imports.

- Minor styling fixes.
2016-02-13 13:49:23 +05:30
Sunil Mohan Adapa
506bff5c7b
users: Multiple SSH keys and better home creation
- Allow setting multiple SSH keys one per line (which is already
  allowed, but advertise it better).

- Use mkhomedir_helper to create the user's home directory.  Avoid
  security and accuracy complexities of creating a home directory.

- Allow homes that don't exist in /home.
2016-01-30 15:30:52 +05:30
James Valleroy
ad7d6db968
users: Add field to set user's SSH key. 2016-01-30 15:30:32 +05:30
Sunil Mohan Adapa
201837518f Update strings during edit/delete operations 2015-12-09 23:55:55 +05:30
Sunil Mohan Adapa
a69f419c3c Make Django urlpatterns list of url()s
- Support for legacy pattern() mechanism will be removed in Django
  1.10.  Currently we see a warning for each Plinth module.
2015-12-05 09:33:23 -05:00
Sunil Mohan Adapa
0b4f56c59d Fix bug in i18n of change password link 2015-11-14 12:05:27 +05:30
Sunil Mohan Adapa
01d50c7ae8 Fix i18n of template expressions 2015-11-14 11:42:32 +05:30
Sunil Mohan Adapa
3df1a88824 Switch to Django i18n for code strings
Django i18n layer is on top of gettext and provide may crucial features
such as per-request locales, lazy translations etc.
2015-11-13 22:08:43 +05:30
Sunil Mohan Adapa
02cd89b60d Internationalize strings in template files 2015-11-13 22:02:17 +05:30
Sunil Mohan Adapa
4210332bf6 users: Improve diagnostics
- Move diagnostics into main module instead of action script.

- Ability run diagnostics as non-root user (because it runs in Plinth
  instead of action).

- Diagnose whether LDAP server is listening.

- Diagnose directory entities created during setup.
2015-08-29 06:22:01 -04:00
Sunil Mohan Adapa
2ca130b154 users: Implement diagnostics 2015-07-28 21:58:17 +05:30
Sunil Mohan Adapa
d363d8db26 users: Use ldapscripts for user management
- Merge all ldap actions into one action.

- Setup ldapscripts using augeas.

- Use the default mechanisms used by ldapscripts.

- Remove adding admin users to 'sudo' group.  Mixing LDAP groups and
  local groups is not a good practice.  'admin' LDAP group will be added
  to sudoers in another patch to freedombox-setup.

- Make all users posixAccount and all groups posixGroup for simplicity.
  Shell access can be restricted in other ways.

- Work around ldapscripts not able to set password using SASL auth.

- Work around ldapscripts having issues with current locale.
2015-07-26 16:33:06 -04:00
Sunil Mohan Adapa
44ec564fd7 users: Fix incorrect replacement of _()
Apologies for the regression.
2015-07-26 13:34:23 -04:00
James Valleroy
d144f6634a Bug fixes:
Check if ejabberd is installed when running actions triggered by signals.
Encode LDAP passwords as bytes.
2015-07-23 22:30:50 +05:30
James Valleroy
cb7c9c26f7 Send LDAP user passwords to actions through stdin, not as arguments. 2015-07-23 22:30:50 +05:30
James Valleroy
86580c9121 Revert "Don't print LDAP user passwords in log."
This reverts commit b1c9c81d58c80d6b313dd2b8a5c5727ecdf6ac49.

Conflicts:
	plinth/modules/first_boot/forms.py
2015-07-23 22:30:50 +05:30
Sunil Mohan Adapa
2b86ce9fdb users: Remove unused code checking for LDAP user 2015-07-18 17:23:04 +05:30
Sunil Mohan Adapa
f35d4257c2 users: Improve Django group handling with LDAP
- Create groups on first boot a bit more safely

- Use get_or_create instead of get() and create()

- Fix issue with not showing a full list of groups in user modify page
  when there is are no users for that group.
2015-07-18 17:17:07 +05:30
Sunil Mohan Adapa
b0d65b4ead users: Use checkboxes for groups during create 2015-07-14 21:23:02 +05:30
James Valleroy
925fbe6cd2 Fix group management issues. 2015-07-13 19:50:59 +05:30
James Valleroy
6ca38ba665 Switch LDAP groups from groupOfUniqueNames to groupOfNames, to work with libpam-ldapd. 2015-07-13 19:50:59 +05:30
James Valleroy
b1c9c81d58 Don't print LDAP user passwords in log. 2015-07-13 19:50:58 +05:30
James Valleroy
0eb3d35b5b Add group management to user editing form. 2015-07-13 19:50:58 +05:30
James Valleroy
197c95a7bf Add actions for LDAP group management. 2015-07-13 19:50:58 +05:30
James Valleroy
2adf14b8b7 Remove POSIX users. 2015-07-13 19:50:58 +05:30
fonfon
824a9091c1 use django-stronghold for authentication handling (instead of @login_required) 2015-07-01 00:01:02 +05:30
Bob Girard
d64ce6cc01 Bundle tests with applications
- For each application, add ./tests directory and __init__.py file
  within it.

- Modify test controllers (coverage.py, runtests.py) to find the new
  test directories for testing and coverage analysis.

- Move existing application-specific test modules (test_pagekite.py) to
  the newly created directories.
2015-06-26 12:05:48 +05:30
Sunil Mohan Adapa
82090af423 ldap: Minor styling fixes 2015-06-25 23:40:24 +05:30
James Valleroy
27e19b4373 users: Change LDAP user password. 2015-06-12 15:49:41 +05:30
James Valleroy
f16ea84f1d users: Delete LDAP user. 2015-06-12 15:49:41 +05:30
James Valleroy
9f371d9a13 users: Rename LDAP user. 2015-06-12 15:49:41 +05:30
James Valleroy
219c3f4b06 users: Show if user is also an LDAP user. 2015-06-12 15:49:41 +05:30
James Valleroy
910ff97c62 users: Add option to create LDAP user. 2015-06-12 15:49:41 +05:30
Sunil Mohan Adapa
c2b806cf0d users: Rename a POSIX user when Plinth user is renamed 2015-01-25 01:45:51 +05:30
Sunil Mohan Adapa
a3de3ae277 users: Handle errors better during POSIX user operations
- If during an action, user does not exist ignore.

- If during an action, return a non-zero exist status.

- Catch an errors during actions as exceptions.

- Display a message that corresponding POSIX operation failed.
2015-01-25 01:45:51 +05:30