, (*1)
VA - VOID
Vortex Adventues - Vortex Online Incharacter Database, (*2)
Install
Download Composer or update composer self-update
., (*3)
- Clone the repository
- Run
composer install
If this didn't create the config/app.php
(or set folder permissions),
then run this command again.
- Run
./bin/cake admin checks
- Fix everything it reports as NOT ok (the red lines).
- This mostly consists of reading and editing
config/app.php
.
- There you need to setup the
'Datasources'
and any other configuration
relevant for your site.
- The database tables can be created with Migrations
./bin/cake migrations migrate
-
Configure apache to serve the webroot
folder.
Example apache vhost.conf:, (*4)
<VirtualHost *:80>
ServerName api.your.domain
DocumentRoot /var/www/void/webroot
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
CustomLog ${APACHE_LOG_DIR}/access.void.log combined
</VirtualHost>
- Browse to /admin/checks
- Again, fix everything it reports as NOT ok.
- Optionally: load some initial database content with
./bin/cake migrations seed
Update
-
./bin/cake backup export
- Make a backup of your data.
-
git pull
- Retrieves the latest code
-
composer update
- Installs/updates package dependencies.
- This is required if
composer.json
was modified, otherwise it is still recommended.
-
./bin/cake migrations migrate
- Updates the database table structure(s).
-
./bin/cake backup export
- Optionaly: create a backup before resuming regular usage/operations.
Database backups
Database backups can be listed, exported and imported using the CLI.
* ./bin/cake backup
lists all the database backups present.
* ./bin/cake backup export [description]
will created a new backup file.
* ./bin/cake backup import <file>
Import a backup (or any other) sql file., (*5)
This tool uses the commandline mysql and mysqldump commands internally.
The created backup files are stored in the backups/
folder., (*6)
Warning: old backups might not be compatible with newer tables structures. It is possible to use cake migrations
to revert to an earlier database structure. Don't forget to save your data / make a backup before doing this!, (*7)
Social provider login
Call the /auth/social
api endpoint to get the list of all supported social login providers. For each provider the result contains a url
and authUri
link. Both need to be customized by the front-end before they can be used., (*8)
-
First in the authUri
replace the STATE
and CALLBACK
strings:, (*9)
-
STATE
should be a random string used to prevent cross-site request forgery
-
CALLBACK
is the front-end url where the user gets redirect to after login
-
Now redirect the user to this modified authUri
to start the login proces., (*10)
-
On succesful login the user gets redirected to the CALLBACK
location., (*11)
-
Check that the returned state
query parameter matches with the earlier provided STATE
value., (*12)
-
In the url
of the social provider replace CODE
and CALLBACK
:, (*13)
-
CODE
with the code
string we got in the query parameter after the login
-
CALLBACK
must be the same as used in the authUri
-
Perform a GET on the modified url
. This should yield the same result as a regular user+name password. The result contains a JWT that can be used for all following interactions with the void api. Similar, a failed login will result in a 401 error response., (*14)
sequenceDiagram
participant B as Browser
participant C as Client App
participant A as VOID Api
participant P as Provider
B-)+C: get login page
activate B
C-)+A: (0) HTTP GET /auth/social
A--)-C: list of providers, each with "authUri" and "url"
C->>C: (1) replace STATE and CALLBACK in "authUri"
C--)-B: login page
B->>B: user selects login provider
B-)+P: (2) redirect to modified "authUri"
P--)B: login page
B-)P: user authenticates
P--)-B: (3) redirect to CALLBACK with CODE and STATE
B-)+C:
C->>C: (4) check STATE is unmodified
C->>C: (5) replace CODE and CALLBACK in "url"
C-)+A: (6) GET "url"
A-)+P: verify CODE
P-)-A: user information
A->>A: find player plin
A--)-C: provide JWT
Note over C,A: use JWT to access VOID Api as user
C-)+A: GET /players/<plin>
A--)-C:
C--)-B: ...
deactivate B