mirror of
https://github.com/strapi/strapi.git
synced 2025-09-25 08:19:07 +00:00
Merge branch 'master' into docs/faqUpdateStable
This commit is contained in:
commit
b17f473902
@ -51,10 +51,10 @@
|
||||
|
||||
<br>
|
||||
|
||||
Strapi is a free and open source headless CMS delivering your content anywhere you need.
|
||||
Strapi is a free and open-source headless CMS delivering your content anywhere you need.
|
||||
|
||||
- **Keep control over your data**. With Strapi, you know where your data is stored, and you keep full control at all times.
|
||||
- **Self hosted**. You can host and scale Strapi projects the way you want. You can choose any hosting platform you want: AWS, Netlify, Heroku, a VPS, or a dedicated server. You can scale as you grow, 100% independent.
|
||||
- **Self-hosted**. You can host and scale Strapi projects the way you want. You can choose any hosting platform you want: AWS, Netlify, Heroku, a VPS, or a dedicated server. You can scale as you grow, 100% independent.
|
||||
- **Database agnostic**. You can choose the database you prefer. Strapi works with SQL & NoSQL databases: MongoDB, PostgreSQL, MySQL, MariaDB, and SQLite.
|
||||
- **Customizable**. You can quickly build your logic by fully customizing APIs, routes, or plugins to fit your needs perfectly.
|
||||
|
||||
@ -117,7 +117,7 @@ Complete installation requirements can be found in the documentation under <a hr
|
||||
|
||||
- **Modern Admin Panel:** Elegant, entirely customizable and a fully extensible admin panel.
|
||||
- **Secure by default:** Reusable policies, CORS, CSP, P3P, Xframe, XSS, and more.
|
||||
- **Plugins Oriented:** Install auth system, content management, custom plugins, and more, in seconds.
|
||||
- **Plugins Oriented:** Install the auth system, content management, custom plugins, and more, in seconds.
|
||||
- **Blazing Fast:** Built on top of Node.js, Strapi delivers amazing performance.
|
||||
- **Front-end Agnostic:** Use any front-end framework (React, Vue, Angular, etc.), mobile apps or even IoT.
|
||||
- **Powerful CLI:** Scaffold projects and APIs on the fly.
|
||||
|
@ -52,7 +52,7 @@ module.exports = ({ env }) => {
|
||||
|
||||
In most use cases you will have different configurations between your environments. For example: your database credentials.
|
||||
|
||||
Instead of writting those credentials into your configuration files, you can define those variables in a `.env` file at the root of your application.
|
||||
Instead of writing those credentials into your configuration files, you can define those variables in a `.env` file at the root of your application.
|
||||
|
||||
**Example**
|
||||
|
||||
@ -116,9 +116,9 @@ What if you need to specific static configurations for specific environments and
|
||||
Strapi configurations can also be created per environment in `./config/env/{env}/{filename}`. These configurations will be merged into the base configurations defined in the `./config` folder.
|
||||
The environment is based on the `NODE_ENV` environment variable (defaults to `development`).
|
||||
|
||||
When starting strapi with `NODE_ENV=production` it will load the configuration from `./config/*` and `./config/env/production/*`. Everything defined in the production config will override the default config.
|
||||
When starting Strapi with `NODE_ENV=production` it will load the configuration from `./config/*` and `./config/env/production/*`. Everything defined in the production config will override the default config.
|
||||
|
||||
In combination with environment variables this pattern becomes really powerfull:
|
||||
In combination with environment variables this pattern becomes really powerful:
|
||||
|
||||
**Example**
|
||||
|
||||
|
@ -40,7 +40,7 @@ First require the utility functions
|
||||
const { parseMultipartData, sanitizeEntity } = require('strapi-utils');
|
||||
```
|
||||
|
||||
- `parseMultipartData`: This function parses strapi's formData format.
|
||||
- `parseMultipartData`: This function parses Strapi's formData format.
|
||||
- `sanitizeEntity`: This function removes all private fields from the model and its relations.
|
||||
|
||||
:::: tabs
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
## Plugin extensions
|
||||
|
||||
In strapi you can install plugins in your `node_modules`. This allows for easy updates and respect best practices. To customize those installed plugins you can work in the `/extensions` directory. It contains all the plugins' customizable files.
|
||||
In Strapi you can install plugins in your `node_modules`. This allows for easy updates and respect best practices. To customize those installed plugins you can work in the `/extensions` directory. It contains all the plugins' customizable files.
|
||||
|
||||
Some plugins will create files in these folders so you can then modify them. You can also create certain files manually to add some custom configuration.
|
||||
|
||||
|
@ -103,7 +103,7 @@ When you create a new API using the CLI (`strapi generate:api <name>`), a model
|
||||
|
||||
To create a component you will have to use the Content Type Builder from the Admin panel, there is no generator for components.
|
||||
|
||||
Or you can create your component manually by following the file path discribed previously and by following the file structure discribed bellow.
|
||||
Or you can create your component manually by following the file path described previously and by following the file structure described below.
|
||||
|
||||
## Model settings
|
||||
|
||||
|
@ -173,7 +173,7 @@ strapi.query('restaurant').update(
|
||||
);
|
||||
```
|
||||
|
||||
When updating an entry with its components or dynamiczones beware that if you send the components without any `id` the previous components will be deleted and replaced. You can update the components by sending their `id` with the rest of the fields:
|
||||
When updating an entry with its components or dynamic zones beware that if you send the components without any `id` the previous components will be deleted and replaced. You can update the components by sending their `id` with the rest of the fields:
|
||||
|
||||
**Update by id and update previous components**
|
||||
|
||||
|
@ -62,7 +62,7 @@ If you use the same operator (except for in and nin) the values will be used to
|
||||
|
||||
If you want to use `AND` for your query you will have to create a custom query by using the [Query](../concepts/queries.md) documentation.
|
||||
|
||||
Strapi doesn't support the `AND` opperator for now.
|
||||
Strapi doesn't support the `AND` operator for now.
|
||||
|
||||
:::
|
||||
|
||||
|
@ -47,7 +47,7 @@ http://api.example.com {
|
||||
|
||||
#### Sub-Folder Unified
|
||||
|
||||
This config is using a sub-folder that is dedicated to Strapi only. It will bind to port 80 HTTP and hosts the "frontend" files on `/var/www` like a normal web server, but proxies all strapi requests on the `example.com/api` sub-path.
|
||||
This config is using a sub-folder that is dedicated to Strapi only. It will bind to port 80 HTTP and hosts the "frontend" files on `/var/www` like a normal web server, but proxies all Strapi requests on the `example.com/api` sub-path.
|
||||
|
||||
::: warning
|
||||
Please note that this config is not focused on the frontend hosting, you will most likely need to adjust this to your frontend software requirements, it is only being shown here as an example.
|
||||
@ -76,7 +76,7 @@ http://api.example.com {
|
||||
|
||||
#### Sub-Folder Split
|
||||
|
||||
This config is using two sub-folders that are dedicated to Strapi. It will bind to port 80 HTTP and hosts the "frontend" files on `/var/www` like a normal web server, but proxies all strapi API requests on the `example.com/api` sub-path. Likewise it will proxy all admin requests on the `example.com/dashboard` sub-path.
|
||||
This config is using two sub-folders that are dedicated to Strapi. It will bind to port 80 HTTP and hosts the "frontend" files on `/var/www` like a normal web server, but proxies all Strapi API requests on the `example.com/api` sub-path. Likewise it will proxy all admin requests on the `example.com/dashboard` sub-path.
|
||||
|
||||
Alternatively for the admin, you can replace the proxy instead with serving the admin `build` folder directly from Caddy, such centralizing the admin but load balancing the backend APIs. The example for this is not shown, but it would likely be something you would build into your CI/CD platform.
|
||||
|
||||
|
@ -4,7 +4,7 @@ As Strapi does not handle SSL directly and hosting a Node.js service on the "edg
|
||||
|
||||
## Configuration
|
||||
|
||||
The below examples are more or less acting as an "SSL termination" proxy, meaning that HAProxy is only accepting the requests on SSL and proxying to other backend services such as Strapi or other web servers. **HAProxy cannot serve static content** and as such it is usually used to handle multi-server deployments in a failover or load-balance situtation. The examples provided below are based around everything existing on the same server, but could easily be tweaked for multi-server deployments.
|
||||
The below examples are more or less acting as an "SSL termination" proxy, meaning that HAProxy is only accepting the requests on SSL and proxying to other backend services such as Strapi or other web servers. **HAProxy cannot serve static content** and as such it is usually used to handle multi-server deployments in a failover or load-balance situation. The examples provided below are based around everything existing on the same server, but could easily be tweaked for multi-server deployments.
|
||||
|
||||
### HAProxy
|
||||
|
||||
@ -84,7 +84,7 @@ backend strapi-backend
|
||||
|
||||
#### Sub-Folder Unified
|
||||
|
||||
This config is using a sub-folder that is dedicated to Strapi only. It will redirect normal HTTP traffic over to SSL and proxies the "frontend" to `localhost:8080`, but proxies all strapi requests on the `example.com/api` sub-path to the locally running Strapi application.
|
||||
This config is using a sub-folder that is dedicated to Strapi only. It will redirect normal HTTP traffic over to SSL and proxies the "frontend" to `localhost:8080`, but proxies all Strapi requests on the `example.com/api` sub-path to the locally running Strapi application.
|
||||
|
||||
::: warning
|
||||
HAProxy **cannot** serve static content, the below example is proxying frontend traffic to some other web server running on the localhost port 8080
|
||||
|
@ -159,7 +159,7 @@ You need to complete the following fields:
|
||||
|
||||
After your **Administrator** registration is complete, you see the Strapi _Administration Dashboard_:
|
||||
|
||||

|
||||

|
||||
|
||||
**Administrators** and front-end **Users** are separate roles.
|
||||
|
||||
@ -235,13 +235,13 @@ You may add your first field, a **Text** field for the **Restaurant** name.
|
||||
- Click on the `Text` field.
|
||||
- In the **Name** field, type `name`.
|
||||
|
||||

|
||||

|
||||
|
||||
- Click on the `ADVANCED SETTINGS` tab.
|
||||
- Check the `Required field` checkbox.
|
||||
- Check the `Unique field` checkbox.
|
||||
|
||||

|
||||

|
||||
|
||||
- Click the `+ Add another field` button.
|
||||
|
||||
@ -253,7 +253,7 @@ You are now ready to add the second field, a **Rich Text** field for the **Resta
|
||||
|
||||
- In the **Name** field, type `description`.
|
||||
|
||||

|
||||

|
||||
|
||||
- Click the `+ Add another field` button.
|
||||
|
||||
@ -265,12 +265,12 @@ You are now ready to add the third field, a **Media** field for the **Restaurant
|
||||
|
||||
- In the **Name** field, type `image`.
|
||||
|
||||

|
||||

|
||||
|
||||
- Click on the **ADVANCED SETTINGS** tab.
|
||||
- Check the `Required field` checkbox.
|
||||
|
||||

|
||||

|
||||
|
||||
- Click the `Finish` button.
|
||||
|
||||
|
@ -24,7 +24,7 @@ Fill out the form on the [Support page](https://strapi.io/support) of the Strapi
|
||||
|
||||
### Why can't I create or update content-types in production/staging?
|
||||
|
||||
Strapi stores model configuration files (what defines the model schema) in files such as `api/restaurant/models/restaurant.settings.json`. Due to how Node.js works, in order for changes to take effect, that would require Node to restart the server. This could potentionally cause downtime of your production service and likewise these changes should be tracked in some kind of source control.
|
||||
Strapi stores model configuration files (what defines the model schema) in files such as `api/restaurant/models/restaurant.settings.json`. Due to how Node.js works, in order for changes to take effect, that would require Node to restart the server. This could potentially cause downtime of your production service and likewise these changes should be tracked in some kind of source control.
|
||||
|
||||
Generally your "flow" of development would follow the following path:
|
||||
|
||||
|
@ -36,7 +36,7 @@ We will create 2 new groups to manage available actions for different kind of us
|
||||
- Check `Select All` for the Application Article Content Type.
|
||||
- And save the new role
|
||||
|
||||
And repeat the opperation for the `Reader` group and check `find`, `findOne` and `count`.
|
||||
And repeat the operation for the `Reader` group and check `find`, `findOne` and `count`.
|
||||
|
||||
### Create users
|
||||
|
||||
|
@ -42,7 +42,7 @@ module.exports = strapi => {
|
||||
};
|
||||
```
|
||||
|
||||
When the hook is created, we have set it to `enabled` in order for Strapi to laod it. You will need to create or edit the file `./config/hook.js`.
|
||||
When the hook is created, we have set it to `enabled` in order for Strapi to load it. You will need to create or edit the file `./config/hook.js`.
|
||||
|
||||
**Path —** `./config/hook.js`
|
||||
|
||||
|
@ -97,7 +97,7 @@ Here is the code you have to find:
|
||||
```js
|
||||
const dateFormats = {
|
||||
...defaultDateFormats,
|
||||
// Customise the format by uncommenting the one you wan to override it corresponds to the type of your field
|
||||
// Customize the format by un-commenting the one you wan to override it corresponds to the type of your field
|
||||
// date: 'dddd, MMMM Do YYYY',
|
||||
// datetime: 'dddd, MMMM Do YYYY HH:mm',
|
||||
// time: 'HH:mm A',
|
||||
|
@ -19,7 +19,7 @@ And that is what we will do to manage our custom data response.
|
||||
In our example we will use a restaurant type with a chef. By default when you fetch restaurants, you will get all information for the chef.
|
||||
Let's consider you don't want to expose the chef's email for privacy reasons.
|
||||
|
||||
To enforce this rule we will customize the action that fetchs all restaurants and remove the email from the returned data.
|
||||
To enforce this rule we will customize the action that fetches all restaurants and remove the email from the returned data.
|
||||
|
||||
To follow the example your will have to create a content type `restaurant` and add the following field definition:
|
||||
|
||||
|
@ -57,7 +57,7 @@ module.exports = {
|
||||
};
|
||||
```
|
||||
|
||||
Now, when an article is created, the authenticated user is automaticaly set as author of the article.
|
||||
Now, when an article is created, the authenticated user is automatically set as author of the article.
|
||||
|
||||
## Limit the update
|
||||
|
||||
|
@ -46,7 +46,7 @@ Please note that Strapi's built in CRON feature will not work if you plan to use
|
||||
|
||||
## Business logic
|
||||
|
||||
Now we can start writting the publishing logic. The code that will fetch all `draft` **Articles** with a `published_at` that is before the current date.
|
||||
Now we can start writing the publishing logic. The code that will fetch all `draft` **Articles** with a `published_at` that is before the current date.
|
||||
|
||||
Then we will update the `status` of all these articles to `published`.
|
||||
|
||||
|
@ -4,7 +4,7 @@ How to upgrade your application to the latest version of Strapi.
|
||||
|
||||
## Upgrading your dependencies
|
||||
|
||||
Start by upgrading all your strapi package version.
|
||||
Start by upgrading all your Strapi package version.
|
||||
|
||||
For example moving from `3.0.0-beta.16` to `3.0.0-beta.17`
|
||||
|
||||
|
@ -39,7 +39,7 @@ You can also SSH into the virtual machine using `root` as the SSH user and your
|
||||
|
||||
## Default server configuration
|
||||
|
||||
From the inital startup you should not need to configure anything to get started, there is some included software that is configured:
|
||||
From the initial startup you should not need to configure anything to get started, there is some included software that is configured:
|
||||
|
||||
- Node.js v12 (installed via the offical [apt repository](https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions))
|
||||
- Yarn Latest Stable (installed via the official [apt repository](https://classic.yarnpkg.com/en/docs/install/#debian-stable))
|
||||
@ -107,7 +107,7 @@ upstream strapi {
|
||||
|
||||
In the DigitalOcean one-click application a service user is used in which it's home directory is located at `/srv/strapi`. Likewise the actual Strapi application is located within this home directory at `/srv/strapi/strapi-development`.
|
||||
|
||||
Please note that with this application it is intially created and ran in the `development` environment to allow for creating models. **You should not use this directly in production**, it is recommended that you configure a private git repository to commit changes into and create a new application directory within the service user's home (Example: `/srv/strapi/strapi-production`). To run the new `production` or `staging` environments you can refer to the [PM2 Documentation](https://pm2.keymetrics.io/docs/usage/quick-start/#managing-processes).
|
||||
Please note that with this application it is initially created and ran in the `development` environment to allow for creating models. **You should not use this directly in production**, it is recommended that you configure a private git repository to commit changes into and create a new application directory within the service user's home (Example: `/srv/strapi/strapi-production`). To run the new `production` or `staging` environments you can refer to the [PM2 Documentation](https://pm2.keymetrics.io/docs/usage/quick-start/#managing-processes).
|
||||
|
||||
## Using the Service Account
|
||||
|
||||
@ -117,7 +117,7 @@ By default the Strapi application will be running under a "service account", thi
|
||||
|
||||
The first step in accessing your service account is to SSH into the root user, depending on your Operating System or your SSH client there may be multiple ways to do this. You should refer to your SSH clients documentation for clarification on using SSH keys.
|
||||
|
||||
After you have successfully logged into the root user you can now run `sudo su strapi` and this will take you to the `strapi` user's shell. To go back to the root user simplely run `exit`.
|
||||
After you have successfully logged into the root user you can now run `sudo su strapi` and this will take you to the `strapi` user's shell. To go back to the root user simply run `exit`.
|
||||
|
||||
::: warning
|
||||
Please note that by default the `strapi` user **cannot run sudo commands** this is intended!
|
||||
|
@ -28,7 +28,7 @@ services:
|
||||
|
||||
:::
|
||||
|
||||
::: tab Postgres
|
||||
::: tab PostgreSQL
|
||||
|
||||
```yaml
|
||||
version: '3'
|
||||
|
@ -32,7 +32,7 @@ Search for the Strapi template using the search bar.
|
||||
- Click `Next`
|
||||
|
||||
::: tip INFO
|
||||
After few second a Strapi application will be setup with a Postgres database.
|
||||
After few second a Strapi application will be setup with a PostgreSQL database.
|
||||
:::
|
||||
|
||||
## Step 4: Visit your app
|
||||
|
@ -98,7 +98,7 @@ If you never configured any middlewares you can delete the file all together. Yo
|
||||
|
||||
We applied the same logic from the `middleware` configuration to the `hook` configuration.
|
||||
|
||||
First you can create a file `./config/hook.js`, and you can move the content of `./config/.hook.json` into it.
|
||||
First you can create a file `./config/hook.js`, and you can move the content of `./config/hook.json` into it.
|
||||
|
||||
::: tip
|
||||
If you never configured any hook you can delete the file all together. You can also only set the configurations you want to customize and leave the others out.
|
||||
|
@ -85,7 +85,7 @@ The component is generated by default when you create a new plugin. Use this com
|
||||
:::note
|
||||
Below is the Initializer component of the content-type-builder plugin.
|
||||
|
||||
It checks whether or not the autoreload feature is enabled and depending on this value changes the mainComponent of the plugin.
|
||||
It checks whether or not the auto-reload feature is enabled and depending on this value changes the mainComponent of the plugin.
|
||||
:::
|
||||
|
||||
```js
|
||||
|
@ -6,7 +6,7 @@ These settings can be declared directly into the main plugin object so they will
|
||||
|
||||
## Adding a setting
|
||||
|
||||
The front-end part of a plugin exports a function which registers the plugin in the administration panel. The argument is composed of two main paramenters:
|
||||
The front-end part of a plugin exports a function which registers the plugin in the administration panel. The argument is composed of two main parameters:
|
||||
|
||||
- `registerPlugin`: `Function`
|
||||
- `settingsBaseURL`: `String`
|
||||
|
@ -7,7 +7,7 @@ Strapi allows you to create local plugins that will work exactly the same as ext
|
||||
Create a development project
|
||||
|
||||
1. Create a new project `cd .. && strapi new myDevelopmentProject`.
|
||||
2. `cd myDevelopmentProject && strapi develop` To start the strapi project
|
||||
2. `cd myDevelopmentProject && strapi develop` To start the Strapi project
|
||||
|
||||
## Plugin development Setup
|
||||
|
||||
|
@ -5,7 +5,7 @@ Thanks to the plugin `Email`, you can send email from your server or externals p
|
||||
## Programmatic usage
|
||||
|
||||
In your custom controllers or services you may want to send email.
|
||||
By using the following function, strapi will use the configured provider to send an email.
|
||||
By using the following function, Strapi will use the configured provider to send an email.
|
||||
|
||||
```js
|
||||
await strapi.plugins['email'].services.email.send({
|
||||
|
@ -479,7 +479,7 @@ Result
|
||||
}
|
||||
```
|
||||
|
||||
## Customise the GraphQL schema
|
||||
## Customize the GraphQL schema
|
||||
|
||||
If you want to define a new scalar, input or enum types, this section is for you. To do so, you will have to create a `schema.graphql.js` file. This file has to be placed into the config folder of each API `./api/*/config/schema.graphql.js` or plugin `./extensions/*/config/schema.graphql.js`.
|
||||
|
||||
@ -567,7 +567,7 @@ module.exports = {
|
||||
Edit the `definition` attribute in one of the `schema.graphql.js` files of your project by using the GraphQL Type language string.
|
||||
|
||||
::: tip
|
||||
The easiest way is to create a new model using the CLI `strapi generate:model category --api restaurant`, so you don't need to customise anything.
|
||||
The easiest way is to create a new model using the CLI `strapi generate:model category --api restaurant`, so you don't need to customize anything.
|
||||
:::
|
||||
|
||||
```js
|
||||
@ -856,7 +856,7 @@ To do that, we need to use the `schema.graphql.js` like below:
|
||||
```js
|
||||
module.exports = {
|
||||
type: {
|
||||
Restaurant: false, // The Restaurant type won't be "queriable" or "mutable".
|
||||
Restaurant: false, // The Restaurant type won't be "queryable" or "mutable".
|
||||
},
|
||||
resolver: {
|
||||
Query: {
|
||||
|
@ -4,7 +4,7 @@ Thanks to the plugin `Upload`, you can upload any kind of file on your server or
|
||||
|
||||
## Configuration
|
||||
|
||||
Currently the strapi middleware in charge of parsing request needs to be configured to support bigger file sizes if you need to upload file with a size greater than 200MB.
|
||||
Currently the Strapi middleware in charge of parsing request needs to be configured to support bigger file sizes if you need to upload file with a size greater than 200MB.
|
||||
|
||||
The library we use is [`koa-body`](https://github.com/dlau/koa-body), and itself uses the [`node-formidable`](https://github.com/felixge/node-formidable) library to process files.
|
||||
|
||||
|
@ -6,7 +6,7 @@ sidebarDepth: 2
|
||||
|
||||
This plugin provides a way to protect your API with a full authentication process based on JWT. This plugin comes also with an ACL strategy that allows you to manage the permissions between the groups of users.
|
||||
|
||||
To access the plugin admin panel, click on the **Roles & Pemissions** link in the left menu.
|
||||
To access the plugin admin panel, click on the **Roles & Permissions** link in the left menu.
|
||||
|
||||
## Concept
|
||||
|
||||
@ -189,7 +189,7 @@ Then fill the informations:
|
||||
- Visit the User Permissions provider settings page <br> [http://localhost:1337/admin/plugins/users-permissions/providers](http://localhost:1337/admin/plugins/users-permissions/providers)
|
||||
- Click on the **GitHub** provider
|
||||
|
||||
Then fill the informations:
|
||||
Then fill the information:
|
||||
|
||||
- **Enable**: `ON`
|
||||
- **Client ID**: 53de5258f8472c140917
|
||||
@ -409,7 +409,7 @@ Then fill the informations:
|
||||
- **Deauthorize**: `https://c6a8cc7c.ngrok.io`
|
||||
- **Data Deletion Requests**: `https://c6a8cc7c.ngrok.io`
|
||||
|
||||
On the **App Review for Instagram Basic Display** click on **Add to submition** for **instagram_graph_user_profile**.
|
||||
On the **App Review for Instagram Basic Display** click on **Add to submission** for **instagram_graph_user_profile**.
|
||||
|
||||
Make sure your Application information are well completed.
|
||||
|
||||
@ -566,7 +566,7 @@ axios
|
||||
})
|
||||
.catch(error => {
|
||||
// Handle error.
|
||||
console.error('An error occured:', error.response);
|
||||
console.error('An error occurred:', error.response);
|
||||
});
|
||||
```
|
||||
|
||||
@ -682,7 +682,7 @@ from the `query` parameter to authenticate.
|
||||
|
||||
That way, you should be able to retrieve the user info you need.
|
||||
|
||||
Now, you can simply call the `callback` function with the username and email of your user. That way, strapi will be able
|
||||
Now, you can simply call the `callback` function with the username and email of your user. That way, Strapi will be able
|
||||
to retrieve your user from the database and log you in.
|
||||
|
||||
### Configure the new provider model onto database
|
||||
|
Loading…
x
Reference in New Issue
Block a user