# Neon Users Service
This module manages access to a pluggable user database backend. By default, it
operates as a standalone module using SQLite as the persistent data store.
## Configuration
Configuration may be passed directly to the `NeonUsersService` constructor,
otherwise it will read from a config file using `ovos-config`. The configuration
file will be `~/.config/neon/diana.yaml` by default. An example valid configuration
is included:
```yaml
neon_users_service:
module: sqlite
sqlite:
db_path: ~/.local/share/neon/user-db.sqlite
```
`module` defines the backend to use and a config key matching that backend
will specify the kwargs passed to the initialization of that module.
## MQ Integration
The `mq_connector` module provides an MQ entrypoint to services and is the
primary method of interaction with this service. Valid requests are detailed
below. Responses will always follow the form:
```yaml
success: False
error: <string description>
```
```yaml
success: True
user: <serialized User object>
```
### Create
Create a new user by sending a request with the following parameters:
```yaml
operation: create
username: <new_username>
password: <new_password>
user: <Optional serialized User object, else default will be created>
```
### Read
Read an existing user. If `password` is not supplied, then the returned User
object will have the `password_hash` and `tokens` config redacted.
```yaml
operation: read
username: <existing_username>
password: <existing_password>
```
### Update
Update an existing user. If a `password` is supplied, it will replace the
user's current password. If no `password` is supplied and `user.password_hash`
is updated, the database entry will be updated with that new value.
```yaml
operation: update
username: <existing_username>
password: <optional new password>
user: <updated User object>
```
### Delete
Delete an existing user. This requires that the supplied `user` object matches
an entry in the database exactly for validation.
```yaml
operation: delete
username: <username_to_delete>
user: <User object to delete>
```
___
### Licensing
This project is free to use under the
[GNU Affero General Public License](https://www.gnu.org/licenses/why-affero-gpl.html).
Contact info@neon.ai for commercial licensing options.
Raw data
{
"_id": null,
"home_page": "https://github.com/NeonGeckoCom/neon-users-service",
"name": "neon-users-service",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "Neongecko",
"author_email": "developers@neon.ai",
"download_url": "https://files.pythonhosted.org/packages/76/01/6ed196a28cb7e5c35722bf3b26506a764a8789046425bd6a434ffb88badc/neon-users-service-0.0.1a1.tar.gz",
"platform": null,
"description": "# Neon Users Service\nThis module manages access to a pluggable user database backend. By default, it\noperates as a standalone module using SQLite as the persistent data store.\n\n## Configuration\nConfiguration may be passed directly to the `NeonUsersService` constructor,\notherwise it will read from a config file using `ovos-config`. The configuration\nfile will be `~/.config/neon/diana.yaml` by default. An example valid configuration\nis included:\n\n```yaml\nneon_users_service:\n module: sqlite\n sqlite:\n db_path: ~/.local/share/neon/user-db.sqlite\n```\n\n`module` defines the backend to use and a config key matching that backend\nwill specify the kwargs passed to the initialization of that module.\n\n## MQ Integration\nThe `mq_connector` module provides an MQ entrypoint to services and is the\nprimary method of interaction with this service. Valid requests are detailed\nbelow. Responses will always follow the form:\n\n```yaml\nsuccess: False\nerror: <string description>\n```\n\n```yaml\nsuccess: True\nuser: <serialized User object>\n```\n\n### Create\nCreate a new user by sending a request with the following parameters:\n```yaml\noperation: create\nusername: <new_username>\npassword: <new_password>\nuser: <Optional serialized User object, else default will be created>\n```\n\n### Read\nRead an existing user. If `password` is not supplied, then the returned User\nobject will have the `password_hash` and `tokens` config redacted.\n```yaml\noperation: read\nusername: <existing_username>\npassword: <existing_password>\n```\n\n### Update\nUpdate an existing user. If a `password` is supplied, it will replace the\nuser's current password. If no `password` is supplied and `user.password_hash` \nis updated, the database entry will be updated with that new value.\n\n```yaml\noperation: update\nusername: <existing_username>\npassword: <optional new password>\nuser: <updated User object>\n```\n\n### Delete\nDelete an existing user. This requires that the supplied `user` object matches\nan entry in the database exactly for validation.\n```yaml\noperation: delete\nusername: <username_to_delete>\nuser: <User object to delete>\n```\n\n___\n### Licensing\nThis project is free to use under the \n[GNU Affero General Public License](https://www.gnu.org/licenses/why-affero-gpl.html).\nContact info@neon.ai for commercial licensing options.\n",
"bugtrack_url": null,
"license": "AGPL-3.0-only",
"summary": "Neon User Management Module",
"version": "0.0.1a1",
"project_urls": {
"Homepage": "https://github.com/NeonGeckoCom/neon-users-service"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "1f29c6c70af605734e8a1188b64aee1818242dba89e35f583b1a87b8cf1710d3",
"md5": "fd1ba0b2a11e8a14ca90671201082bf7",
"sha256": "5069f5aa60d996d0a24b2db0e569cdf1127667e08766729f3ebb0f56a41890dd"
},
"downloads": -1,
"filename": "neon_users_service-0.0.1a1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fd1ba0b2a11e8a14ca90671201082bf7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 26724,
"upload_time": "2024-12-20T01:10:14",
"upload_time_iso_8601": "2024-12-20T01:10:14.660080Z",
"url": "https://files.pythonhosted.org/packages/1f/29/c6c70af605734e8a1188b64aee1818242dba89e35f583b1a87b8cf1710d3/neon_users_service-0.0.1a1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "76016ed196a28cb7e5c35722bf3b26506a764a8789046425bd6a434ffb88badc",
"md5": "7b184b3f9da5d82e18143811c519d29a",
"sha256": "7815c0eed346dadd2e56dde9e839c8cc3cefad289a1f79bdfcd3f6c160715889"
},
"downloads": -1,
"filename": "neon-users-service-0.0.1a1.tar.gz",
"has_sig": false,
"md5_digest": "7b184b3f9da5d82e18143811c519d29a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23008,
"upload_time": "2024-12-20T01:10:17",
"upload_time_iso_8601": "2024-12-20T01:10:17.254311Z",
"url": "https://files.pythonhosted.org/packages/76/01/6ed196a28cb7e5c35722bf3b26506a764a8789046425bd6a434ffb88badc/neon-users-service-0.0.1a1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-20 01:10:17",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "NeonGeckoCom",
"github_project": "neon-users-service",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "neon-users-service"
}