@universis/user-storage

1.0.8 • Public • Published

universis-user-storage

Universis API server extension for managing remote user storage that is going to be used to store user configuration data.

@universis/storage uses Redis as backed storage by default.

Redis Installation

Follow RedisJSON installation instructions and install Redis with RedisJSON plugin

Launch RedisJSON with Docker

Install Redis on Ubuntu

Install Redis on MacOSX

Install RedisJSON plugin on Ubuntu

Installation

npm i @universis/storage

Configuration

Register UserStorageService to application services section:

# server/config/app.json

{
    "services": [
        ...
        { "serviceType": "@universis/storage#UserStorageService" }
    ]
...
}

Configure @universis/storage to connect to Redis database:

"settings": {
    "universis": {
            "storage": {
                "options": {
                    "host": "127.0.0.1"
                    "port": 6379
                }
            },
        }
    }
 ...

For a complete list of available options read node_redis documentation

Configure User Storage Access

UserStorageService uses UserStorageAccessConfiguration strategy in order to define user access against storage:

It registers DefaultUserStorageAccessConfiguration strategy which contains a set of privileges for configuring the way that users act against storage.

DefaultUserStorageAccessConfiguration gets these privileges from a file named user.storage.access.json which may exist in application configuration directory (e.g. server/config/)

# server/config/user.storage.access.json

[
    {
        "scope": [
            "registrar"
        ],
        "resource": "me/registrar/?",
        "access": [
            "read",
            "write"
        ]
    },
    {
        "scope": [
            "teachers"
        ],
        "resource": "me/teachers/?",
        "access": [
            "read",
            "write"
        ]
    },
    {
        "scope": [
            "students"
        ],
        "resource": "me/students/?",
        "access": [
            "read",
            "write"
        ]
    }
]

Each privilege contains a set of authorization scopes given to a user context during login, a resource path which is a regular expression that represents an expression of a user storage key path and a set of access rights (read or write) on it.

e.g. A logged-in user with scope registrar has read-write to user storage for all keys that exist under me/registrar path or a user with scope teachers has read-write access for all keys unders me/teachers path etc.

UserStorageService extends application service router by adding the following endpoints

Get user storage item
POST /api/users/me/storage/get

{
    "key": "string"
}

Returns a user storage item based on the specified key path e.g.

{
    "key": "application1/preferences",
    "value": {
        "lastAction": "/hello",
    }
}
Set user storage item
POST /api/users/me/storage/set

{
    "key": "string",
    "value": {
        ...
    }
}

Sets a user storage item to the specified key path e.g.

{
    "key": "application1/preferences",
    "value": {
        "lastAction": "/helloWorld",
    }
}

Package Sidebar

Install

npm i @universis/user-storage

Weekly Downloads

15

Version

1.0.8

License

LGPL-3.0-or-later

Unpacked Size

145 kB

Total Files

15

Last publish

Collaborators

  • universis