| @@ -0,0 +1,52 @@ | |||||
| { | |||||
| "routes": [ | |||||
| { | |||||
| "method": "GET", | |||||
| "path": "/template-emails", | |||||
| "handler": "template-email.find", | |||||
| "config": { | |||||
| "policies": [] | |||||
| } | |||||
| }, | |||||
| { | |||||
| "method": "GET", | |||||
| "path": "/template-emails/count", | |||||
| "handler": "template-email.count", | |||||
| "config": { | |||||
| "policies": [] | |||||
| } | |||||
| }, | |||||
| { | |||||
| "method": "GET", | |||||
| "path": "/template-emails/:id", | |||||
| "handler": "template-email.findOne", | |||||
| "config": { | |||||
| "policies": [] | |||||
| } | |||||
| }, | |||||
| { | |||||
| "method": "POST", | |||||
| "path": "/template-emails", | |||||
| "handler": "template-email.create", | |||||
| "config": { | |||||
| "policies": [] | |||||
| } | |||||
| }, | |||||
| { | |||||
| "method": "PUT", | |||||
| "path": "/template-emails/:id", | |||||
| "handler": "template-email.update", | |||||
| "config": { | |||||
| "policies": [] | |||||
| } | |||||
| }, | |||||
| { | |||||
| "method": "DELETE", | |||||
| "path": "/template-emails/:id", | |||||
| "handler": "template-email.delete", | |||||
| "config": { | |||||
| "policies": [] | |||||
| } | |||||
| } | |||||
| ] | |||||
| } | |||||
| @@ -0,0 +1,60 @@ | |||||
| "use strict"; | |||||
| const { parseMultipartData, sanitizeEntity } = require("strapi-utils"); | |||||
| /** | |||||
| * Read the documentation (https://strapi.io/documentation/v3.x/concepts/controllers.html#core-controllers) | |||||
| * to customize this controller | |||||
| */ | |||||
| module.exports = { | |||||
| async create(ctx) { | |||||
| const decrypted = await strapi.plugins[ | |||||
| "users-permissions" | |||||
| ].services.jwt.getToken(ctx); | |||||
| let entity; | |||||
| if (ctx.is("multipart")) { | |||||
| const { data, files } = parseMultipartData(ctx); | |||||
| DATA["last_updated_api_by"] = decrypted.id; | |||||
| entity = await strapi.services["template-email"].create(data, { | |||||
| files, | |||||
| }); | |||||
| } else { | |||||
| let data = ctx.request.body; | |||||
| DATA["last_updated_api_by"] = decrypted.id; | |||||
| entity = await strapi.services["template-email"].create(data); | |||||
| } | |||||
| var entry = sanitizeEntity(entity, { | |||||
| model: strapi.models["template-email"], | |||||
| }); | |||||
| return entry; | |||||
| }, | |||||
| async update(ctx) { | |||||
| const { id } = ctx.params; | |||||
| const decrypted = await strapi.plugins[ | |||||
| "users-permissions" | |||||
| ].services.jwt.getToken(ctx); | |||||
| let entity; | |||||
| if (ctx.is("multipart")) { | |||||
| const { data, files } = parseMultipartData(ctx); | |||||
| data["last_updated_api_by"] = decrypted.id; | |||||
| entity = await strapi.services["template-email"].update( | |||||
| { id }, | |||||
| data, | |||||
| { | |||||
| files, | |||||
| } | |||||
| ); | |||||
| } else { | |||||
| let data = ctx.request.body; | |||||
| data["last_updated_api_by"] = decrypted.id; | |||||
| entity = await strapi.services["template-email"].update( | |||||
| { id }, | |||||
| data | |||||
| ); | |||||
| } | |||||
| var entry = sanitizeEntity(entity, { | |||||
| model: strapi.models["template-email"], | |||||
| }); | |||||
| return entry; | |||||
| }, | |||||
| }; | |||||
| @@ -0,0 +1,8 @@ | |||||
| 'use strict'; | |||||
| /** | |||||
| * Read the documentation (https://strapi.io/documentation/developer-docs/latest/concepts/models.html#lifecycle-hooks) | |||||
| * to customize this model | |||||
| */ | |||||
| module.exports = {}; | |||||
| @@ -0,0 +1,26 @@ | |||||
| { | |||||
| "kind": "collectionType", | |||||
| "collectionName": "template_emails", | |||||
| "info": { | |||||
| "name": "TemplateEmail" | |||||
| }, | |||||
| "options": { | |||||
| "increments": true, | |||||
| "timestamps": true, | |||||
| "draftAndPublish": true | |||||
| }, | |||||
| "attributes": { | |||||
| "template_name": { | |||||
| "type": "string" | |||||
| }, | |||||
| "subject": { | |||||
| "type": "string" | |||||
| }, | |||||
| "text": { | |||||
| "type": "text" | |||||
| }, | |||||
| "html": { | |||||
| "type": "text" | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,8 @@ | |||||
| 'use strict'; | |||||
| /** | |||||
| * Read the documentation (https://strapi.io/documentation/developer-docs/latest/concepts/services.html#core-services) | |||||
| * to customize this service | |||||
| */ | |||||
| module.exports = {}; | |||||
| @@ -0,0 +1,28 @@ | |||||
| module.exports = ({ env }) => ({ | |||||
| email: { | |||||
| provider: "nodemailer", | |||||
| providerOptions: { | |||||
| host: env("SMTP_HOST"), | |||||
| port: env("SMTP_PORT"), | |||||
| secure: false, | |||||
| auth: { | |||||
| user: env("SMTP_USER"), | |||||
| pass: env("SMTP_PASSWORD"), | |||||
| }, | |||||
| }, | |||||
| settings: { | |||||
| defaultFrom: "noreply@thamrin.co.id", | |||||
| defaultReplyTo: "noreply@thamrin.co.id", | |||||
| }, | |||||
| }, | |||||
| graphql : { | |||||
| endpoint: "/graphql", | |||||
| shadowCRUD: true, | |||||
| playgroundAlways: false, | |||||
| depthLimit: 1000, | |||||
| apolloServer: { | |||||
| tracing: false, | |||||
| }, | |||||
| }, | |||||
| }); | |||||
| @@ -16,4 +16,16 @@ DATABASE_HOST=172.16.1.8 | |||||
| DATABASE_PORT=3306 | DATABASE_PORT=3306 | ||||
| DATABASE_NAME=thamrin_ecomm_tbg | DATABASE_NAME=thamrin_ecomm_tbg | ||||
| DATABASE_USERNAME=root | DATABASE_USERNAME=root | ||||
| DATABASE_PASSWORD=Master81 | |||||
| DATABASE_PASSWORD=Master81 | |||||
| // localhost | |||||
| DATABASE_HOST=localhost | |||||
| DATABASE_PORT=3306 | |||||
| DATABASE_NAME=tbg-ecomm-nextjs | |||||
| DATABASE_USERNAME=root | |||||
| DATABASE_PASSWORD= | |||||
| SMTP_HOST=mail.service.ac.id | |||||
| SMTP_PORT=587 | |||||
| SMTP_USER=user_smtp | |||||
| SMTP_PASSWORD=password_smtp | |||||
| @@ -23,6 +23,7 @@ | |||||
| "strapi-plugin-graphql": "3.4.6", | "strapi-plugin-graphql": "3.4.6", | ||||
| "strapi-plugin-upload": "3.4.6", | "strapi-plugin-upload": "3.4.6", | ||||
| "strapi-plugin-users-permissions": "3.4.6", | "strapi-plugin-users-permissions": "3.4.6", | ||||
| "strapi-provider-email-nodemailer": "^3.6.3", | |||||
| "strapi-utils": "3.4.6" | "strapi-utils": "3.4.6" | ||||
| }, | }, | ||||
| "author": { | "author": { | ||||
| @@ -6651,6 +6651,11 @@ lodash@4.17.20, lodash@^4.1.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14 | |||||
| resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" | ||||
| integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== | ||||
| lodash@4.17.21: | |||||
| version "4.17.21" | |||||
| resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" | |||||
| integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== | |||||
| log-symbols@^2.2.0: | log-symbols@^2.2.0: | ||||
| version "2.2.0" | version "2.2.0" | ||||
| resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" | ||||
| @@ -7392,6 +7397,11 @@ nodemailer-shared@1.1.0: | |||||
| dependencies: | dependencies: | ||||
| nodemailer-fetch "1.6.0" | nodemailer-fetch "1.6.0" | ||||
| nodemailer@6.6.0: | |||||
| version "6.6.0" | |||||
| resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.0.tgz#ed47bb572b48d9d0dca3913fdc156203f438f427" | |||||
| integrity sha512-ikSMDU1nZqpo2WUPE0wTTw/NGGImTkwpJKDIFPZT+YvvR9Sj+ze5wzu95JHkBMglQLoG2ITxU21WukCC/XsFkg== | |||||
| noop-logger@^0.1.1: | noop-logger@^0.1.1: | ||||
| version "0.1.1" | version "0.1.1" | ||||
| resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" | resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" | ||||
| @@ -10188,6 +10198,14 @@ strapi-plugin-users-permissions@3.4.6: | |||||
| strapi-utils "3.4.6" | strapi-utils "3.4.6" | ||||
| uuid "^3.1.0" | uuid "^3.1.0" | ||||
| strapi-provider-email-nodemailer@^3.6.3: | |||||
| version "3.6.3" | |||||
| resolved "https://registry.yarnpkg.com/strapi-provider-email-nodemailer/-/strapi-provider-email-nodemailer-3.6.3.tgz#41bf98a7d8d8e11ad7ceb45d9fcfb0461d2749ea" | |||||
| integrity sha512-teBnVIu/lN3iRJvuj85YAO1lsT0U/kH4SXT0yjvyTLw2qZ7DS3viRq+i+P+FT5uLyMEZpR0yVRXUtvRITC2ohQ== | |||||
| dependencies: | |||||
| lodash "4.17.21" | |||||
| nodemailer "6.6.0" | |||||
| strapi-provider-email-sendmail@3.4.6: | strapi-provider-email-sendmail@3.4.6: | ||||
| version "3.4.6" | version "3.4.6" | ||||
| resolved "https://registry.yarnpkg.com/strapi-provider-email-sendmail/-/strapi-provider-email-sendmail-3.4.6.tgz#6934a0386f53213767b4a320d322ff85fc721922" | resolved "https://registry.yarnpkg.com/strapi-provider-email-sendmail/-/strapi-provider-email-sendmail-3.4.6.tgz#6934a0386f53213767b4a320d322ff85fc721922" | ||||