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": {
|
"permissions_templates": {
|
||||||
"type": "relation",
|
"type": "relation",
|
||||||
"relation": "oneToMany",
|
"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
|
* 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": {
|
"info": {
|
||||||
"singularName": "permissions-template",
|
"singularName": "permissions-template",
|
||||||
"pluralName": "permissions-templates",
|
"pluralName": "permissions-templates",
|
||||||
"displayName": "PermissionsTemplate"
|
"displayName": "PermissionsTemplate",
|
||||||
|
"description": ""
|
||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"draftAndPublish": false
|
"draftAndPublish": false
|
||||||
},
|
},
|
||||||
"pluginOptions": {},
|
"pluginOptions": {},
|
||||||
"attributes": {
|
"attributes": {
|
||||||
"key": {
|
|
||||||
"type": "uid"
|
|
||||||
},
|
|
||||||
"title": {
|
"title": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
@@ -24,6 +22,12 @@
|
|||||||
"type": "component",
|
"type": "component",
|
||||||
"repeatable": true,
|
"repeatable": true,
|
||||||
"component": "user.permissions"
|
"component": "user.permissions"
|
||||||
|
},
|
||||||
|
"choral": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "manyToOne",
|
||||||
|
"target": "api::choral.choral",
|
||||||
|
"inversedBy": "permissions_templates"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,15 @@
|
|||||||
* permissions-template controller
|
* 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": {
|
"dob": {
|
||||||
"type": "date"
|
"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 {
|
export default {
|
||||||
/**
|
/**
|
||||||
@@ -16,5 +16,21 @@ export default {
|
|||||||
* This gives you an opportunity to set up your data model,
|
* This gives you an opportunity to set up your data model,
|
||||||
* run jobs, or perform some special logic.
|
* 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);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
47
types/generated/contentTypes.d.ts
vendored
47
types/generated/contentTypes.d.ts
vendored
@@ -475,6 +475,42 @@ export interface ApiBoardBoard extends Struct.CollectionTypeSchema {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ApiChoralPermissionChoralPermission
|
||||||
|
extends Struct.CollectionTypeSchema {
|
||||||
|
collectionName: 'choral_permissions';
|
||||||
|
info: {
|
||||||
|
description: '';
|
||||||
|
displayName: 'ChoralPermission';
|
||||||
|
pluralName: 'choral-permissions';
|
||||||
|
singularName: 'choral-permission';
|
||||||
|
};
|
||||||
|
options: {
|
||||||
|
draftAndPublish: false;
|
||||||
|
};
|
||||||
|
attributes: {
|
||||||
|
choralId: Schema.Attribute.Integer;
|
||||||
|
choralName: Schema.Attribute.String;
|
||||||
|
createdAt: Schema.Attribute.DateTime;
|
||||||
|
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
||||||
|
Schema.Attribute.Private;
|
||||||
|
locale: Schema.Attribute.String & Schema.Attribute.Private;
|
||||||
|
localizations: Schema.Attribute.Relation<
|
||||||
|
'oneToMany',
|
||||||
|
'api::choral-permission.choral-permission'
|
||||||
|
> &
|
||||||
|
Schema.Attribute.Private;
|
||||||
|
permissions: Schema.Attribute.Component<'user.permissions', true>;
|
||||||
|
publishedAt: Schema.Attribute.DateTime;
|
||||||
|
updatedAt: Schema.Attribute.DateTime;
|
||||||
|
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
||||||
|
Schema.Attribute.Private;
|
||||||
|
user: Schema.Attribute.Relation<
|
||||||
|
'manyToOne',
|
||||||
|
'plugin::users-permissions.user'
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export interface ApiChoralChoral extends Struct.CollectionTypeSchema {
|
export interface ApiChoralChoral extends Struct.CollectionTypeSchema {
|
||||||
collectionName: 'chorals';
|
collectionName: 'chorals';
|
||||||
info: {
|
info: {
|
||||||
@@ -500,6 +536,7 @@ export interface ApiChoralChoral extends Struct.CollectionTypeSchema {
|
|||||||
createdAt: Schema.Attribute.DateTime;
|
createdAt: Schema.Attribute.DateTime;
|
||||||
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
||||||
Schema.Attribute.Private;
|
Schema.Attribute.Private;
|
||||||
|
email: Schema.Attribute.Email;
|
||||||
locale: Schema.Attribute.String & Schema.Attribute.Private;
|
locale: Schema.Attribute.String & Schema.Attribute.Private;
|
||||||
localizations: Schema.Attribute.Relation<
|
localizations: Schema.Attribute.Relation<
|
||||||
'oneToMany',
|
'oneToMany',
|
||||||
@@ -515,6 +552,7 @@ export interface ApiChoralChoral extends Struct.CollectionTypeSchema {
|
|||||||
'oneToMany',
|
'oneToMany',
|
||||||
'api::permissions-template.permissions-template'
|
'api::permissions-template.permissions-template'
|
||||||
>;
|
>;
|
||||||
|
phoneNumber: Schema.Attribute.String;
|
||||||
postal: Schema.Attribute.Integer;
|
postal: Schema.Attribute.Integer;
|
||||||
publishedAt: Schema.Attribute.DateTime;
|
publishedAt: Schema.Attribute.DateTime;
|
||||||
updatedAt: Schema.Attribute.DateTime;
|
updatedAt: Schema.Attribute.DateTime;
|
||||||
@@ -524,6 +562,7 @@ export interface ApiChoralChoral extends Struct.CollectionTypeSchema {
|
|||||||
'manyToMany',
|
'manyToMany',
|
||||||
'plugin::users-permissions.user'
|
'plugin::users-permissions.user'
|
||||||
>;
|
>;
|
||||||
|
website: Schema.Attribute.String;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -561,6 +600,7 @@ export interface ApiPermissionsTemplatePermissionsTemplate
|
|||||||
extends Struct.CollectionTypeSchema {
|
extends Struct.CollectionTypeSchema {
|
||||||
collectionName: 'permissions_templates';
|
collectionName: 'permissions_templates';
|
||||||
info: {
|
info: {
|
||||||
|
description: '';
|
||||||
displayName: 'PermissionsTemplate';
|
displayName: 'PermissionsTemplate';
|
||||||
pluralName: 'permissions-templates';
|
pluralName: 'permissions-templates';
|
||||||
singularName: 'permissions-template';
|
singularName: 'permissions-template';
|
||||||
@@ -569,11 +609,11 @@ export interface ApiPermissionsTemplatePermissionsTemplate
|
|||||||
draftAndPublish: false;
|
draftAndPublish: false;
|
||||||
};
|
};
|
||||||
attributes: {
|
attributes: {
|
||||||
|
choral: Schema.Attribute.Relation<'manyToOne', 'api::choral.choral'>;
|
||||||
createdAt: Schema.Attribute.DateTime;
|
createdAt: Schema.Attribute.DateTime;
|
||||||
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
||||||
Schema.Attribute.Private;
|
Schema.Attribute.Private;
|
||||||
description: Schema.Attribute.String;
|
description: Schema.Attribute.String;
|
||||||
key: Schema.Attribute.UID;
|
|
||||||
locale: Schema.Attribute.String & Schema.Attribute.Private;
|
locale: Schema.Attribute.String & Schema.Attribute.Private;
|
||||||
localizations: Schema.Attribute.Relation<
|
localizations: Schema.Attribute.Relation<
|
||||||
'oneToMany',
|
'oneToMany',
|
||||||
@@ -1053,6 +1093,10 @@ export interface PluginUsersPermissionsUser
|
|||||||
>;
|
>;
|
||||||
blocked: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo<false>;
|
blocked: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo<false>;
|
||||||
board: Schema.Attribute.Relation<'oneToOne', 'api::board.board'>;
|
board: Schema.Attribute.Relation<'oneToOne', 'api::board.board'>;
|
||||||
|
choral_permissions: Schema.Attribute.Relation<
|
||||||
|
'oneToMany',
|
||||||
|
'api::choral-permission.choral-permission'
|
||||||
|
>;
|
||||||
choralAdmin: Schema.Attribute.Relation<'manyToMany', 'api::choral.choral'>;
|
choralAdmin: Schema.Attribute.Relation<'manyToMany', 'api::choral.choral'>;
|
||||||
choralOwner: Schema.Attribute.Relation<'oneToOne', 'api::choral.choral'>;
|
choralOwner: Schema.Attribute.Relation<'oneToOne', 'api::choral.choral'>;
|
||||||
chorals: Schema.Attribute.Relation<'manyToMany', 'api::choral.choral'>;
|
chorals: Schema.Attribute.Relation<'manyToMany', 'api::choral.choral'>;
|
||||||
@@ -1123,6 +1167,7 @@ declare module '@strapi/strapi' {
|
|||||||
'api::board-card.board-card': ApiBoardCardBoardCard;
|
'api::board-card.board-card': ApiBoardCardBoardCard;
|
||||||
'api::board-list.board-list': ApiBoardListBoardList;
|
'api::board-list.board-list': ApiBoardListBoardList;
|
||||||
'api::board.board': ApiBoardBoard;
|
'api::board.board': ApiBoardBoard;
|
||||||
|
'api::choral-permission.choral-permission': ApiChoralPermissionChoralPermission;
|
||||||
'api::choral.choral': ApiChoralChoral;
|
'api::choral.choral': ApiChoralChoral;
|
||||||
'api::event.event': ApiEventEvent;
|
'api::event.event': ApiEventEvent;
|
||||||
'api::permissions-template.permissions-template': ApiPermissionsTemplatePermissionsTemplate;
|
'api::permissions-template.permissions-template': ApiPermissionsTemplatePermissionsTemplate;
|
||||||
|
|||||||
Reference in New Issue
Block a user