The functionality to create a user via api in Strapi 4 is already built in.
Its just that the route is different to the usual api routes.
Route to hit as POST:
// route to POST to
localhost:1337/api/auth/local/register
// body data to send
{
"email": "test1@test3.com",
"username": "test2",
"password": "123456",
"firstname": "Grey", // custom field (see below config)
"lastname": "Joy", // custom field (see below config)
"organisers": [1] // id or ids of a relation field (mine is called organisers)
}
// returns
{
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NCwiaWF0IjoxNjk1MTQ1NDA3LCJleHAiOjE2OTc3Mzc0MDd9.9aUrYF4Ws1WCTDXHTFMU_7WUs0i5iLeqPdwubHM62mc",
"user": {
"id": 4,
"username": "test2",
"email": "test1@test3.com",
"provider": "local",
"confirmed": true,
"blocked": false,
"createdAt": "2023-09-19T17:43:27.406Z",
"updatedAt": "2023-09-19T17:43:27.406Z",
"firstname": "Grey",
"lastname": "Joy",
"role": {
"id": 3,
"name": "Customer",
"description": "a logged in customer",
"type": "customer",
"createdAt": "2023-09-19T09:51:22.756Z",
"updatedAt": "2023-09-19T09:51:22.756Z"
}
}
}
If you added custom fields to your user you will need to enable them by adding a file to the config folder:
// ./config/plugins.js
module.exports = ({ env }) => ({
"users-permissions": {
config: {
register: {
// put the name of your added fields here
allowedFields: ["firstname", "lastname", "organisers"],
},
},
}
});
Reference:
https://docs.strapi.io/dev-docs/plugins/users-permissions#registration
Top comments (0)