Data Initialization
If you are deploying Casdoor with other services as a complete application, you may want to provide an out-of-the-box feature for users. This means that users can directly use the application without any configuration.
In such a situation, you can use data initialization to register your service in Casdoor through a configuration file. This file can be pre-defined or dynamically generated by your own service.
Here we give a tutorial for importing or exporting config data.
Import Config Data
If there is a configuration file named init_data.json
at the root directory of Casdoor, it will be used to initialize data in Casdoor. All you have to do is place this file in the root directory where Casdoor will run.
If you are using the official Docker image of Casdoor, here are some scripts that can help you to mount init_data.json
into the container.
A template for init_data.json
is provided at: init_data.json.template. Rename it to init_data.json
before using it.
For Docker
If you deploy Casdoor with Docker, you can use the volume
command to mount init_data.json
into the container.
docker run ... -v /path/to/init_data.json:/init_data.json
For Kubernetes
If you deploy Casdoor with Kubernetes, you can use the configmap
to store init_data.json
.
apiVersion: v1
kind: ConfigMap
metadata:
name: casdoor-init-data
data:
init_data.json:
You can mount the data into Casdoor pods
by mounting the configmap
. You can modify your deployment
as follows:
apiVersion: apps/v1
kind: Deployment
...
spec:
template:
...
spec:
containers:
...
volumeMounts:
- mountPath: /init_data.json
name: casdoor-init-data-volume
subPath: init_data.json
volumes:
- configMap:
name: casdoor-init-data
name: casdoor-init-data-volume
Export Config Data
You can also export all of Casdoor configuration data into a file for data migration. A Go test named TestDumpToFile()
is provided at: init_data_dump_test.go
go test ./object -v -run TestDumpToFile
After running this Go test, a file named init_data_dump.json
will be generated in same directory. This file contains your full Casdoor configuration data. If you want to migrate the data into another Casdoor instance, just rename init_data_dump.json
to init_data.json
and move it to root directory of target Casdoor folder.
References
All Casdoor objects supported by the data initialization are as follows:
Object | Go Struct | Documentation |
---|---|---|
organizations | struct | doc |
applications | struct | doc |
users | struct | doc |
certs | struct | |
providers | struct | doc |
ldaps | struct | doc |
models | struct | |
permissions | struct | doc |
payments | struct | doc |
products | struct | doc |
resources | struct | doc |
roles | struct | doc |
syncers | struct | doc |
tokens | struct | doc |
webhooks | struct | doc |
groups | struct | doc |
adapters | struct | doc |
enforcers | struct | |
plans | struct | doc |
pricings | struct | doc |
invitations | struct | doc |
records | struct | |
sessions | struct | |
subscriptions | struct | doc |
transactions | struct |
If you still feel confused about filling out this template, you can call the RESTful API or use the debug mode of your browser to see the response of GetXXX
to these objects. The responses are in the same format as init_data.json
.