summaryrefslogtreecommitdiff
path: root/src/mailman/rest/users.py
Commit message (Collapse)AuthorAgeFilesLines
...
* * A user's password can be verified by POSTing to .../user/<id>/login. TheBarry Warsaw2012-12-261-0/+22
| | | | | | data must contain a single parameter `cleartext_password` and if this matches, a 204 (No Content) will be returned, otherwise a 403 (Forbidden) is returned. (LP: #1065447)
* * Finish rewrite of users.rst doctest.Barry Warsaw2012-12-261-2/+4
| | | | | | | * Migrate non-doctests to the test_users.py unittest. * Add more corner cases to the unittest. * Be sure to return a 404 when trying to get the address records of a non-existant user.
* * Deleting a user through the REST API also deletes all the user's linkedBarry Warsaw2012-11-051-2/+7
| | | | | | addresses and memberships. (LP: #1074374) Also: Clean up pyflakes warning by removing an obsolete __all__ entry.
* * You can now PUT and PATCH on user resources to change the user's displayBarry Warsaw2012-09-221-2/+58
| | | | | | | | | | | | | | name or password. For passwords, you pass in the clear text password and Mailman will hash it before storing. Also: * Major refactoring of validators for PUT and PATCH. Pull the common logic out of configuration.py and put it in a PatchValidator class in helpers.py. Also move GetterSetter to helpers.py * Add new exception classes RESTError, UnknownPATCHRequestError, ReadOnlyPATCHRequestError. These are used in the PatchValidator. * Added Validator.update() which works nicely for PATCH and PUT.
* * `passlib`_ is now used for all password hashing instead of flufl.password.Barry Warsaw2012-07-021-2/+1
| | | | | | | | | | | | | | | | | | | | | | | The default hash is `sha512_crypt`. * Events renamed and moved: * `mailman.chains.accept.AcceptNotification` * `mailman.chains.base.ChainNotification` * `mailman.chains.discard.DiscardNotification` * `mailman.chains.hold.HoldNotification` * `mailman.chains.owner.OwnerNotification` * `mailman.chains.reject.RejectNotification` changed to (respectively): * `mailman.interfaces.chains.AcceptEvent` * `mailman.interfaces.chains.ChainEvent` * `mailman.interfaces.chains.DiscardEvent` * `mailman.interfaces.chains.HoldEvent` * `mailman.interfaces.chains.AcceptOwnerEvent` * `mailman.interfaces.chains.RejectEvent` * A `ConfigurationUpdatedEvent` is triggered when the system-wide global configuration stack is pushed or popped. * With the switch to `passlib`_, `[passwords]password_scheme` has been removed. Instead use `[passwords]path` to specify where to find the `passlib.cfg` file. See the comments in `schema.cfg` for details.
* Replace flufl.password with passlib, albeit with a wrapper.Barry Warsaw2012-06-271-3/+3
|
* Schema change. After discussion at Pycon, we decided to change "real_name" toBarry Warsaw2012-03-151-4/+4
| | | | | | | | | | | "display_name" across the board. * `IMailingList.real_name` -> `IMailingList.display_name` * `IUser.real_name` -> `IUser.display_name` * `IAddress.real_name` -> `IAddress.display_name` * Schema changes: - real_name -> display_name (mailinglist, user, address)
* copybumpBarry Warsaw2012-01-011-1/+1
|
* Replace the password stuff with flufl.password.Barry Warsaw2012-01-011-4/+5
|
* * Preferences for addresses, users, and members can be accessed, changed, andBarry Warsaw2011-09-231-0/+13
| | | | | | deleted through the REST interface. Hierarchical, combined preferences for members, and system preferences can be read through the REST interface. (LP: #821438)
* * User and Member ids are now proper UUIDs. The UUIDs are pended as unicodes,Barry Warsaw2011-08-301-6/+16
| | | | | | | | | | | | | | | | | | and exposed to the REST API as their integer equivalents. They are stored in the database using Storm's UUID type. - ISubscriptionService.get_member() now takes a UUID - IUserManager.get_user_by_id() now takes a UUID * Moderators and owners can be added via REST (LP: #834130). Given by Stephen A. Goss. - add_member() grows a `role` parameter. - ISubscriptionService.join() grows a `role` parameter. * InvalidEmailAddressError no longer repr()'s its value. * `address` -> `email` for consistency - delete_member() - ISubscriptionService.leave() * Fixed typo in app/subscriptions.py __all__ * AlreadySubscribedError: attributes are now public. * More .txt -> .rst renames.
* * DELETE users via the REST API. (LP: #820660)Barry Warsaw2011-08-141-1/+9
|
* Add REST API for addresses, and change the user REST API to use it whereBarry Warsaw2011-04-191-39/+13
| | | | | | | | | | appropriate. Also: * When an Address instance is created, set its registered_on attribute. * Users may not have a password or real_name, so only include those attributes in the REST API for Users if they are set.
* Give user resources and user address resources a self_link.Barry Warsaw2011-04-191-0/+2
|
* Add /users/<uid>/addresses to get all the addresses registered to a user.Barry Warsaw2011-04-091-0/+36
|
* Hook in initial password setting to user creation via API.Barry Warsaw2011-04-081-1/+6
|
* Get users via email address through the REST API.Barry Warsaw2011-04-051-2/+15
|
* More fleshing out of the users REST API.Barry Warsaw2011-04-041-1/+28
| | | | | | | | | | | | | | * Add a 'uid factory' which allows us to return predictable unique ids for various testing purposes, e.g. user ids. This should work even in the case of cross-subprocess uid generation. * REST access to individual users, or the set of all users. * User objects now have a created_on attribute. * Users can be created through the web, but must have an email address. * Add a [devmode] 'testing' variable for communicating to qrunner subprocesses that we're running in testing mode. This allows us to coordinate factories and such in the qrunner processes. * layers.is_testing() for more consistent API. * Give AddressError a .address attribute for better diagnostics.
* Basic REST users URL.Barry Warsaw2011-03-181-0/+41
|
* * Start fleshing out the REST API for users.Barry Warsaw2011-03-181-0/+38
* Remove mmsitepass.py - there is no more site password.