Add choral permissions
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"kind": "collectionType",
|
||||
"collectionName": "choral_permissions",
|
||||
"info": {
|
||||
"singularName": "choral-permission",
|
||||
"pluralName": "choral-permissions",
|
||||
"displayName": "ChoralPermission",
|
||||
"description": ""
|
||||
},
|
||||
"options": {
|
||||
"draftAndPublish": false
|
||||
},
|
||||
"pluginOptions": {},
|
||||
"attributes": {
|
||||
"choralName": {
|
||||
"type": "string"
|
||||
},
|
||||
"choralId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"permissions": {
|
||||
"type": "component",
|
||||
"repeatable": true,
|
||||
"component": "user.permissions"
|
||||
},
|
||||
"user": {
|
||||
"type": "relation",
|
||||
"relation": "manyToOne",
|
||||
"target": "plugin::users-permissions.user",
|
||||
"inversedBy": "choral_permissions"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* choral-permission controller
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi'
|
||||
|
||||
export default factories.createCoreController('api::choral-permission.choral-permission');
|
||||
7
src/api/choral-permission/routes/choral-permission.ts
Normal file
7
src/api/choral-permission/routes/choral-permission.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* choral-permission router
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreRouter('api::choral-permission.choral-permission');
|
||||
7
src/api/choral-permission/services/choral-permission.ts
Normal file
7
src/api/choral-permission/services/choral-permission.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* choral-permission service
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi';
|
||||
|
||||
export default factories.createCoreService('api::choral-permission.choral-permission');
|
||||
@@ -71,7 +71,17 @@
|
||||
"permissions_templates": {
|
||||
"type": "relation",
|
||||
"relation": "oneToMany",
|
||||
"target": "api::permissions-template.permissions-template"
|
||||
"target": "api::permissions-template.permissions-template",
|
||||
"mappedBy": "choral"
|
||||
},
|
||||
"email": {
|
||||
"type": "email"
|
||||
},
|
||||
"phoneNumber": {
|
||||
"type": "string"
|
||||
},
|
||||
"website": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,36 @@
|
||||
* choral controller
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi'
|
||||
import { factories } from "@strapi/strapi";
|
||||
|
||||
export default factories.createCoreController('api::choral.choral');
|
||||
export default factories.createCoreController(
|
||||
"api::choral.choral",
|
||||
({ strapi }) => ({
|
||||
async create(ctx) {
|
||||
const data = JSON.parse(ctx.request.body.data);
|
||||
|
||||
if (ctx.request.files.coverImage) {
|
||||
const files = Array.isArray(ctx.request.files.coverImage)
|
||||
? ctx.request.files.coverImage[0]
|
||||
: ctx.request.files.coverImage;
|
||||
const extension = files.originalFilename.match(/\.[0-9a-z]+$/i);
|
||||
const payload = {
|
||||
fileInfo: {
|
||||
caption: "undefined",
|
||||
alternativeText: data.name || "",
|
||||
name: `${data.name}_cover${extension}`,
|
||||
},
|
||||
};
|
||||
const asset = await strapi.services["plugin::upload.upload"].upload({
|
||||
data: payload,
|
||||
files,
|
||||
});
|
||||
data.cover = asset[0].id;
|
||||
}
|
||||
|
||||
ctx.request.body = { data };
|
||||
const result = await super.create(ctx);
|
||||
return result;
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
@@ -4,16 +4,14 @@
|
||||
"info": {
|
||||
"singularName": "permissions-template",
|
||||
"pluralName": "permissions-templates",
|
||||
"displayName": "PermissionsTemplate"
|
||||
"displayName": "PermissionsTemplate",
|
||||
"description": ""
|
||||
},
|
||||
"options": {
|
||||
"draftAndPublish": false
|
||||
},
|
||||
"pluginOptions": {},
|
||||
"attributes": {
|
||||
"key": {
|
||||
"type": "uid"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -24,6 +22,12 @@
|
||||
"type": "component",
|
||||
"repeatable": true,
|
||||
"component": "user.permissions"
|
||||
},
|
||||
"choral": {
|
||||
"type": "relation",
|
||||
"relation": "manyToOne",
|
||||
"target": "api::choral.choral",
|
||||
"inversedBy": "permissions_templates"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
* permissions-template controller
|
||||
*/
|
||||
|
||||
import { factories } from '@strapi/strapi'
|
||||
import { factories } from "@strapi/strapi";
|
||||
|
||||
export default factories.createCoreController('api::permissions-template.permissions-template');
|
||||
export default factories.createCoreController(
|
||||
"api::permissions-template.permissions-template",
|
||||
({ strapi }) => ({
|
||||
async create(ctx) {
|
||||
console.log(ctx);
|
||||
const { data, meta } = await super.create(ctx);
|
||||
return { data, meta };
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
@@ -163,6 +163,12 @@
|
||||
},
|
||||
"dob": {
|
||||
"type": "date"
|
||||
},
|
||||
"choral_permissions": {
|
||||
"type": "relation",
|
||||
"relation": "oneToMany",
|
||||
"target": "api::choral-permission.choral-permission",
|
||||
"mappedBy": "user"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
20
src/index.ts
20
src/index.ts
@@ -1,4 +1,4 @@
|
||||
// import type { Core } from '@strapi/strapi';
|
||||
import type { Core } from "@strapi/strapi";
|
||||
|
||||
export default {
|
||||
/**
|
||||
@@ -16,5 +16,21 @@ export default {
|
||||
* This gives you an opportunity to set up your data model,
|
||||
* run jobs, or perform some special logic.
|
||||
*/
|
||||
bootstrap(/* { strapi }: { strapi: Core.Strapi } */) {},
|
||||
bootstrap({ strapi }: { strapi: Core.Strapi }) {
|
||||
strapi.db.lifecycles.subscribe({
|
||||
models: ["plugin::users-permissions.user"], // Applies only to users in users-permissions
|
||||
|
||||
/**
|
||||
* Lifecycle hook triggered after a new user is created.
|
||||
* Ensures that a user profile is created with either the provided full name and bio
|
||||
* or a default generated username and bio if missing.
|
||||
* @param {any} event - The event object containing the created user's details.
|
||||
*/
|
||||
async afterCreate(event: any) {
|
||||
const { result, params } = event;
|
||||
console.log(result);
|
||||
console.log(params);
|
||||
},
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user