@crowi/api 2.0.0-alpha.1 → 2.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/collab/attach.d.ts +34 -10
- package/dist/collab/attach.js +77 -1
- package/dist/collab/attach.js.map +1 -1
- package/dist/crowi/index.js +7 -6
- package/dist/crowi/index.js.map +1 -1
- package/dist/hono/handlers/activation.d.ts +3 -3
- package/dist/hono/handlers/admin/users.d.ts +118 -0
- package/dist/hono/handlers/admin/users.js +28 -0
- package/dist/hono/handlers/admin/users.js.map +1 -1
- package/dist/hono/handlers/app.d.ts +1 -0
- package/dist/hono/handlers/app.js +11 -0
- package/dist/hono/handlers/app.js.map +1 -1
- package/dist/hono/handlers/attachment-stream.js +23 -0
- package/dist/hono/handlers/attachment-stream.js.map +1 -1
- package/dist/hono/handlers/draft.js +10 -0
- package/dist/hono/handlers/draft.js.map +1 -1
- package/dist/hono/handlers/emailChange.d.ts +4 -4
- package/dist/hono/handlers/inviteAccept.d.ts +6 -6
- package/dist/hono/handlers/page-collab.js +4 -0
- package/dist/hono/handlers/page-collab.js.map +1 -1
- package/dist/hono/handlers/page.d.ts +251 -0
- package/dist/hono/handlers/page.js +123 -6
- package/dist/hono/handlers/page.js.map +1 -1
- package/dist/hono/handlers/passwordReset.d.ts +5 -5
- package/dist/hono/handlers/tokenAuth.d.ts +7 -7
- package/dist/mcp/result.d.ts +42 -16
- package/dist/mcp/result.js +56 -10
- package/dist/mcp/result.js.map +1 -1
- package/dist/mcp/tools/page.js +21 -1
- package/dist/mcp/tools/page.js.map +1 -1
- package/dist/mcp/tools/search.d.ts +12 -0
- package/dist/mcp/tools/search.js +21 -5
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/migration/cli-api.d.ts +8 -1
- package/dist/migration/cli-api.js +2 -0
- package/dist/migration/cli-api.js.map +1 -1
- package/dist/migration/helpers.d.ts +13 -0
- package/dist/migration/helpers.js +29 -0
- package/dist/migration/helpers.js.map +1 -0
- package/dist/migration/migrations/code-mask.d.ts +76 -0
- package/dist/migration/migrations/code-mask.js +224 -0
- package/dist/migration/migrations/code-mask.js.map +1 -0
- package/dist/migration/migrations/files-url-to-attachments.d.ts +99 -0
- package/dist/migration/migrations/files-url-to-attachments.js +305 -0
- package/dist/migration/migrations/files-url-to-attachments.js.map +1 -0
- package/dist/migration/migrations/index.js +4 -0
- package/dist/migration/migrations/index.js.map +1 -1
- package/dist/migration/migrations/page-status-default.d.ts +31 -1
- package/dist/migration/migrations/published-current-revision.d.ts +47 -0
- package/dist/migration/migrations/published-current-revision.js +90 -0
- package/dist/migration/migrations/published-current-revision.js.map +1 -0
- package/dist/migration/migrations/relocate-reserved-api-paths.d.ts +37 -1
- package/dist/migration/migrations/relocate-reserved-api-paths.js +11 -3
- package/dist/migration/migrations/relocate-reserved-api-paths.js.map +1 -1
- package/dist/migration/migrations/revisions-schema-unify.d.ts +35 -1
- package/dist/migration/migrations/user-unique-prepare.d.ts +55 -1
- package/dist/migration/migrations/user-unique-prepare.js +5 -0
- package/dist/migration/migrations/user-unique-prepare.js.map +1 -1
- package/dist/migration/migrations/wikilink-format.d.ts +75 -12
- package/dist/migration/migrations/wikilink-format.js +23 -157
- package/dist/migration/migrations/wikilink-format.js.map +1 -1
- package/dist/migration/migrations/wikilink-html-recover.d.ts +191 -0
- package/dist/migration/migrations/wikilink-html-recover.js +340 -0
- package/dist/migration/migrations/wikilink-html-recover.js.map +1 -0
- package/dist/migration/registry.d.ts +8 -2
- package/dist/migration/registry.js +5 -1
- package/dist/migration/registry.js.map +1 -1
- package/dist/migration/run-boot-migrations.d.ts +4 -1
- package/dist/migration/run-boot-migrations.js +55 -23
- package/dist/migration/run-boot-migrations.js.map +1 -1
- package/dist/migration/runner.js +8 -1
- package/dist/migration/runner.js.map +1 -1
- package/dist/migration/types.d.ts +57 -5
- package/dist/migration/types.js.map +1 -1
- package/dist/models/page.d.ts +23 -3
- package/dist/models/page.js +91 -5
- package/dist/models/page.js.map +1 -1
- package/dist/models/user.d.ts +1 -0
- package/dist/models/user.js +40 -21
- package/dist/models/user.js.map +1 -1
- package/dist/plugin/plugin-manager.js +1 -1
- package/dist/renderer/core/headings.d.ts +12 -1
- package/dist/renderer/core/headings.js +48 -8
- package/dist/renderer/core/headings.js.map +1 -1
- package/dist/renderer/pipeline.d.ts +6 -0
- package/dist/renderer/pipeline.js.map +1 -1
- package/dist/renderer/registry.js +1 -1
- package/dist/util/page-response.js +19 -2
- package/dist/util/page-response.js.map +1 -1
- package/dist/util/ws-token.d.ts +13 -0
- package/dist/util/ws-token.js +43 -3
- package/dist/util/ws-token.js.map +1 -1
- package/package.json +13 -7
- package/views/mail/layout.mjml +7 -5
- package/dist/common/functions/path2name.d.ts +0 -1
- package/dist/common/functions/path2name.js +0 -22
- package/dist/common/functions/path2name.js.map +0 -1
- package/dist/common/functions/renderIcon.d.ts +0 -1
- package/dist/common/functions/renderIcon.js +0 -9
- package/dist/common/functions/renderIcon.js.map +0 -1
- package/dist/controllers/admin.d.ts +0 -3
- package/dist/controllers/admin.js +0 -474
- package/dist/controllers/admin.js.map +0 -1
- package/dist/controllers/attachment.d.ts +0 -4
- package/dist/controllers/attachment.js +0 -200
- package/dist/controllers/attachment.js.map +0 -1
- package/dist/controllers/backlink.d.ts +0 -3
- package/dist/controllers/backlink.js +0 -42
- package/dist/controllers/backlink.js.map +0 -1
- package/dist/controllers/bookmark.d.ts +0 -3
- package/dist/controllers/bookmark.js +0 -100
- package/dist/controllers/bookmark.js.map +0 -1
- package/dist/controllers/comment.d.ts +0 -3
- package/dist/controllers/comment.js +0 -111
- package/dist/controllers/comment.js.map +0 -1
- package/dist/controllers/index.d.ts +0 -25
- package/dist/controllers/index.js +0 -44
- package/dist/controllers/index.js.map +0 -1
- package/dist/controllers/installer.d.ts +0 -3
- package/dist/controllers/installer.js +0 -48
- package/dist/controllers/installer.js.map +0 -1
- package/dist/controllers/login.d.ts +0 -4
- package/dist/controllers/login.js +0 -438
- package/dist/controllers/login.js.map +0 -1
- package/dist/controllers/logout.d.ts +0 -5
- package/dist/controllers/logout.js +0 -11
- package/dist/controllers/logout.js.map +0 -1
- package/dist/controllers/me.d.ts +0 -4
- package/dist/controllers/me.js +0 -369
- package/dist/controllers/me.js.map +0 -1
- package/dist/controllers/notification.d.ts +0 -3
- package/dist/controllers/notification.js +0 -88
- package/dist/controllers/notification.js.map +0 -1
- package/dist/controllers/page.d.ts +0 -3
- package/dist/controllers/page.js +0 -881
- package/dist/controllers/page.js.map +0 -1
- package/dist/controllers/revision.d.ts +0 -3
- package/dist/controllers/revision.js +0 -91
- package/dist/controllers/revision.js.map +0 -1
- package/dist/controllers/search.d.ts +0 -3
- package/dist/controllers/search.js +0 -93
- package/dist/controllers/search.js.map +0 -1
- package/dist/controllers/share.d.ts +0 -3
- package/dist/controllers/share.js +0 -207
- package/dist/controllers/share.js.map +0 -1
- package/dist/controllers/shareAccess.d.ts +0 -3
- package/dist/controllers/shareAccess.js +0 -28
- package/dist/controllers/shareAccess.js.map +0 -1
- package/dist/controllers/slack.d.ts +0 -3
- package/dist/controllers/slack.js +0 -87
- package/dist/controllers/slack.js.map +0 -1
- package/dist/controllers/tokenAuth.d.ts +0 -10
- package/dist/controllers/tokenAuth.js +0 -292
- package/dist/controllers/tokenAuth.js.map +0 -1
- package/dist/controllers/user.d.ts +0 -3
- package/dist/controllers/user.js +0 -67
- package/dist/controllers/user.js.map +0 -1
- package/dist/controllers/version.d.ts +0 -4
- package/dist/controllers/version.js +0 -19
- package/dist/controllers/version.js.map +0 -1
- package/dist/crowi/express-init.d.ts +0 -4
- package/dist/crowi/express-init.js +0 -101
- package/dist/crowi/express-init.js.map +0 -1
- package/dist/form/admin/app.d.ts +0 -2
- package/dist/form/admin/app.js +0 -9
- package/dist/form/admin/app.js.map +0 -1
- package/dist/form/admin/auth.d.ts +0 -2
- package/dist/form/admin/auth.js +0 -9
- package/dist/form/admin/auth.js.map +0 -1
- package/dist/form/admin/aws.d.ts +0 -2
- package/dist/form/admin/aws.js +0 -13
- package/dist/form/admin/aws.js.map +0 -1
- package/dist/form/admin/github.d.ts +0 -2
- package/dist/form/admin/github.js +0 -15
- package/dist/form/admin/github.js.map +0 -1
- package/dist/form/admin/google.d.ts +0 -2
- package/dist/form/admin/google.js +0 -13
- package/dist/form/admin/google.js.map +0 -1
- package/dist/form/admin/mail.d.ts +0 -2
- package/dist/form/admin/mail.js +0 -13
- package/dist/form/admin/mail.js.map +0 -1
- package/dist/form/admin/sec.d.ts +0 -2
- package/dist/form/admin/sec.js +0 -10
- package/dist/form/admin/sec.js.map +0 -1
- package/dist/form/admin/slackSetting.d.ts +0 -2
- package/dist/form/admin/slackSetting.js +0 -13
- package/dist/form/admin/slackSetting.js.map +0 -1
- package/dist/form/admin/userEdit.d.ts +0 -2
- package/dist/form/admin/userEdit.js +0 -9
- package/dist/form/admin/userEdit.js.map +0 -1
- package/dist/form/admin/userInvite.d.ts +0 -2
- package/dist/form/admin/userInvite.js +0 -9
- package/dist/form/admin/userInvite.js.map +0 -1
- package/dist/form/comment.d.ts +0 -2
- package/dist/form/comment.js +0 -9
- package/dist/form/comment.js.map +0 -1
- package/dist/form/index.d.ts +0 -25
- package/dist/form/index.js +0 -48
- package/dist/form/index.js.map +0 -1
- package/dist/form/invited.d.ts +0 -2
- package/dist/form/invited.js +0 -13
- package/dist/form/invited.js.map +0 -1
- package/dist/form/login.d.ts +0 -2
- package/dist/form/login.js +0 -11
- package/dist/form/login.js.map +0 -1
- package/dist/form/me/apiToken.d.ts +0 -2
- package/dist/form/me/apiToken.js +0 -9
- package/dist/form/me/apiToken.js.map +0 -1
- package/dist/form/me/password.d.ts +0 -2
- package/dist/form/me/password.js +0 -11
- package/dist/form/me/password.js.map +0 -1
- package/dist/form/me/user.d.ts +0 -2
- package/dist/form/me/user.js +0 -9
- package/dist/form/me/user.js.map +0 -1
- package/dist/form/register.d.ts +0 -2
- package/dist/form/register.js +0 -13
- package/dist/form/register.js.map +0 -1
- package/dist/form/revision.d.ts +0 -2
- package/dist/form/revision.js +0 -13
- package/dist/form/revision.js.map +0 -1
- package/dist/hono/handlers/admin/share.d.ts +0 -106
- package/dist/hono/handlers/admin/share.js +0 -55
- package/dist/hono/handlers/admin/share.js.map +0 -1
- package/dist/middlewares/accessTokenParser.d.ts +0 -4
- package/dist/middlewares/accessTokenParser.js +0 -29
- package/dist/middlewares/accessTokenParser.js.map +0 -1
- package/dist/middlewares/adminRequired.d.ts +0 -10
- package/dist/middlewares/adminRequired.js +0 -35
- package/dist/middlewares/adminRequired.js.map +0 -1
- package/dist/middlewares/applicationInstalled.d.ts +0 -3
- package/dist/middlewares/applicationInstalled.js +0 -20
- package/dist/middlewares/applicationInstalled.js.map +0 -1
- package/dist/middlewares/applicationNotInstalled.d.ts +0 -3
- package/dist/middlewares/applicationNotInstalled.js +0 -13
- package/dist/middlewares/applicationNotInstalled.js.map +0 -1
- package/dist/middlewares/basicAuth.d.ts +0 -4
- package/dist/middlewares/basicAuth.js +0 -23
- package/dist/middlewares/basicAuth.js.map +0 -1
- package/dist/middlewares/csrfVerify.d.ts +0 -4
- package/dist/middlewares/csrfVerify.js +0 -24
- package/dist/middlewares/csrfVerify.js.map +0 -1
- package/dist/middlewares/encodeSpace.d.ts +0 -3
- package/dist/middlewares/encodeSpace.js +0 -14
- package/dist/middlewares/encodeSpace.js.map +0 -1
- package/dist/middlewares/fileAccessRightOrLoginRequired.d.ts +0 -4
- package/dist/middlewares/fileAccessRightOrLoginRequired.js +0 -29
- package/dist/middlewares/fileAccessRightOrLoginRequired.js.map +0 -1
- package/dist/middlewares/index.d.ts +0 -16
- package/dist/middlewares/index.js +0 -30
- package/dist/middlewares/index.js.map +0 -1
- package/dist/middlewares/jwtAdminRequired.d.ts +0 -8
- package/dist/middlewares/jwtAdminRequired.js +0 -35
- package/dist/middlewares/jwtAdminRequired.js.map +0 -1
- package/dist/middlewares/jwtAuth.d.ts +0 -4
- package/dist/middlewares/jwtAuth.js +0 -104
- package/dist/middlewares/jwtAuth.js.map +0 -1
- package/dist/middlewares/loginChecker.d.ts +0 -4
- package/dist/middlewares/loginChecker.js +0 -32
- package/dist/middlewares/loginChecker.js.map +0 -1
- package/dist/middlewares/loginRequired.d.ts +0 -4
- package/dist/middlewares/loginRequired.js +0 -88
- package/dist/middlewares/loginRequired.js.map +0 -1
- package/dist/routes/admin.d.ts +0 -4
- package/dist/routes/admin.js +0 -17
- package/dist/routes/admin.js.map +0 -1
- package/dist/routes/api/admin.d.ts +0 -4
- package/dist/routes/api/admin.js +0 -37
- package/dist/routes/api/admin.js.map +0 -1
- package/dist/routes/api/attachment.d.ts +0 -4
- package/dist/routes/api/attachment.js +0 -19
- package/dist/routes/api/attachment.js.map +0 -1
- package/dist/routes/api/bookmark.d.ts +0 -4
- package/dist/routes/api/bookmark.js +0 -15
- package/dist/routes/api/bookmark.js.map +0 -1
- package/dist/routes/api/comment.d.ts +0 -4
- package/dist/routes/api/comment.js +0 -14
- package/dist/routes/api/comment.js.map +0 -1
- package/dist/routes/api/index.d.ts +0 -4
- package/dist/routes/api/index.js +0 -36
- package/dist/routes/api/index.js.map +0 -1
- package/dist/routes/api/like.d.ts +0 -4
- package/dist/routes/api/like.js +0 -13
- package/dist/routes/api/like.js.map +0 -1
- package/dist/routes/api/notification.d.ts +0 -4
- package/dist/routes/api/notification.js +0 -15
- package/dist/routes/api/notification.js.map +0 -1
- package/dist/routes/api/page.d.ts +0 -4
- package/dist/routes/api/page.js +0 -24
- package/dist/routes/api/page.js.map +0 -1
- package/dist/routes/api/revision.d.ts +0 -4
- package/dist/routes/api/revision.js +0 -14
- package/dist/routes/api/revision.js.map +0 -1
- package/dist/routes/api/share.d.ts +0 -4
- package/dist/routes/api/share.js +0 -16
- package/dist/routes/api/share.js.map +0 -1
- package/dist/routes/api/version.d.ts +0 -4
- package/dist/routes/api/version.js +0 -10
- package/dist/routes/api/version.js.map +0 -1
- package/dist/routes/index.d.ts +0 -4
- package/dist/routes/index.js +0 -71
- package/dist/routes/index.js.map +0 -1
- package/dist/routes/login.d.ts +0 -4
- package/dist/routes/login.js +0 -18
- package/dist/routes/login.js.map +0 -1
- package/dist/routes/me.d.ts +0 -4
- package/dist/routes/me.js +0 -24
- package/dist/routes/me.js.map +0 -1
- package/dist/routes/ts-rest/admin/app.d.ts +0 -4
- package/dist/routes/ts-rest/admin/app.js +0 -67
- package/dist/routes/ts-rest/admin/app.js.map +0 -1
- package/dist/routes/ts-rest/admin/auth.d.ts +0 -4
- package/dist/routes/ts-rest/admin/auth.js +0 -95
- package/dist/routes/ts-rest/admin/auth.js.map +0 -1
- package/dist/routes/ts-rest/admin/index.d.ts +0 -10
- package/dist/routes/ts-rest/admin/index.js +0 -35
- package/dist/routes/ts-rest/admin/index.js.map +0 -1
- package/dist/routes/ts-rest/admin/mail.d.ts +0 -4
- package/dist/routes/ts-rest/admin/mail.js +0 -156
- package/dist/routes/ts-rest/admin/mail.js.map +0 -1
- package/dist/routes/ts-rest/admin/plugins.d.ts +0 -4
- package/dist/routes/ts-rest/admin/plugins.js +0 -317
- package/dist/routes/ts-rest/admin/plugins.js.map +0 -1
- package/dist/routes/ts-rest/admin/search.d.ts +0 -4
- package/dist/routes/ts-rest/admin/search.js +0 -67
- package/dist/routes/ts-rest/admin/search.js.map +0 -1
- package/dist/routes/ts-rest/admin/security.d.ts +0 -4
- package/dist/routes/ts-rest/admin/security.js +0 -114
- package/dist/routes/ts-rest/admin/security.js.map +0 -1
- package/dist/routes/ts-rest/admin/share.d.ts +0 -4
- package/dist/routes/ts-rest/admin/share.js +0 -69
- package/dist/routes/ts-rest/admin/share.js.map +0 -1
- package/dist/routes/ts-rest/admin/storage.d.ts +0 -4
- package/dist/routes/ts-rest/admin/storage.js +0 -59
- package/dist/routes/ts-rest/admin/storage.js.map +0 -1
- package/dist/routes/ts-rest/admin/users.d.ts +0 -4
- package/dist/routes/ts-rest/admin/users.js +0 -215
- package/dist/routes/ts-rest/admin/users.js.map +0 -1
- package/dist/routes/ts-rest/adminCrypto.d.ts +0 -4
- package/dist/routes/ts-rest/adminCrypto.js +0 -111
- package/dist/routes/ts-rest/adminCrypto.js.map +0 -1
- package/dist/routes/ts-rest/app.d.ts +0 -4
- package/dist/routes/ts-rest/app.js +0 -23
- package/dist/routes/ts-rest/app.js.map +0 -1
- package/dist/routes/ts-rest/attachment.d.ts +0 -4
- package/dist/routes/ts-rest/attachment.js +0 -830
- package/dist/routes/ts-rest/attachment.js.map +0 -1
- package/dist/routes/ts-rest/auth.d.ts +0 -4
- package/dist/routes/ts-rest/auth.js +0 -70
- package/dist/routes/ts-rest/auth.js.map +0 -1
- package/dist/routes/ts-rest/autocomplete.d.ts +0 -30
- package/dist/routes/ts-rest/autocomplete.js +0 -189
- package/dist/routes/ts-rest/autocomplete.js.map +0 -1
- package/dist/routes/ts-rest/backlink.d.ts +0 -4
- package/dist/routes/ts-rest/backlink.js +0 -106
- package/dist/routes/ts-rest/backlink.js.map +0 -1
- package/dist/routes/ts-rest/bookmark.d.ts +0 -4
- package/dist/routes/ts-rest/bookmark.js +0 -189
- package/dist/routes/ts-rest/bookmark.js.map +0 -1
- package/dist/routes/ts-rest/comment.d.ts +0 -4
- package/dist/routes/ts-rest/comment.js +0 -217
- package/dist/routes/ts-rest/comment.js.map +0 -1
- package/dist/routes/ts-rest/draft.d.ts +0 -22
- package/dist/routes/ts-rest/draft.js +0 -200
- package/dist/routes/ts-rest/draft.js.map +0 -1
- package/dist/routes/ts-rest/index.d.ts +0 -4
- package/dist/routes/ts-rest/index.js +0 -103
- package/dist/routes/ts-rest/index.js.map +0 -1
- package/dist/routes/ts-rest/installer.d.ts +0 -4
- package/dist/routes/ts-rest/installer.js +0 -77
- package/dist/routes/ts-rest/installer.js.map +0 -1
- package/dist/routes/ts-rest/me.d.ts +0 -4
- package/dist/routes/ts-rest/me.js +0 -410
- package/dist/routes/ts-rest/me.js.map +0 -1
- package/dist/routes/ts-rest/notification.d.ts +0 -4
- package/dist/routes/ts-rest/notification.js +0 -241
- package/dist/routes/ts-rest/notification.js.map +0 -1
- package/dist/routes/ts-rest/page-collab.d.ts +0 -29
- package/dist/routes/ts-rest/page-collab.js +0 -90
- package/dist/routes/ts-rest/page-collab.js.map +0 -1
- package/dist/routes/ts-rest/page-preview.d.ts +0 -26
- package/dist/routes/ts-rest/page-preview.js +0 -80
- package/dist/routes/ts-rest/page-preview.js.map +0 -1
- package/dist/routes/ts-rest/page.d.ts +0 -4
- package/dist/routes/ts-rest/page.js +0 -676
- package/dist/routes/ts-rest/page.js.map +0 -1
- package/dist/routes/ts-rest/presence.d.ts +0 -30
- package/dist/routes/ts-rest/presence.js +0 -155
- package/dist/routes/ts-rest/presence.js.map +0 -1
- package/dist/routes/ts-rest/revision.d.ts +0 -4
- package/dist/routes/ts-rest/revision.js +0 -240
- package/dist/routes/ts-rest/revision.js.map +0 -1
- package/dist/routes/ts-rest/search.d.ts +0 -4
- package/dist/routes/ts-rest/search.js +0 -121
- package/dist/routes/ts-rest/search.js.map +0 -1
- package/dist/routes/ts-rest/tokenAuth.d.ts +0 -4
- package/dist/routes/ts-rest/tokenAuth.js +0 -94
- package/dist/routes/ts-rest/tokenAuth.js.map +0 -1
- package/dist/routes/ts-rest/user.d.ts +0 -4
- package/dist/routes/ts-rest/user.js +0 -307
- package/dist/routes/ts-rest/user.js.map +0 -1
- package/dist/types/express.d.ts +0 -34
- package/dist/types/express.js +0 -50
- package/dist/types/express.js.map +0 -1
- package/dist/util/accessTokenParser.d.ts +0 -1
- package/dist/util/accessTokenParser.js +0 -34
- package/dist/util/accessTokenParser.js.map +0 -1
- package/dist/util/apiPaginate.d.ts +0 -11
- package/dist/util/apiPaginate.js +0 -33
- package/dist/util/apiPaginate.js.map +0 -1
- package/dist/util/apiResponse.d.ts +0 -9
- package/dist/util/apiResponse.js +0 -23
- package/dist/util/apiResponse.js.map +0 -1
- package/dist/util/auth.d.ts +0 -11
- package/dist/util/auth.js +0 -48
- package/dist/util/auth.js.map +0 -1
- package/dist/util/aws-config-migration.d.ts +0 -11
- package/dist/util/aws-config-migration.js +0 -68
- package/dist/util/aws-config-migration.js.map +0 -1
- package/dist/util/formUtil.d.ts +0 -2
- package/dist/util/formUtil.js +0 -15
- package/dist/util/formUtil.js.map +0 -1
- package/dist/util/githubAuth.d.ts +0 -2
- package/dist/util/githubAuth.js +0 -82
- package/dist/util/githubAuth.js.map +0 -1
- package/dist/util/googleAuth.d.ts +0 -2
- package/dist/util/googleAuth.js +0 -85
- package/dist/util/googleAuth.js.map +0 -1
- package/dist/util/mailer.d.ts +0 -7
- package/dist/util/mailer.js +0 -98
- package/dist/util/mailer.js.map +0 -1
- package/dist/util/page-status-migration.d.ts +0 -23
- package/dist/util/page-status-migration.js +0 -48
- package/dist/util/page-status-migration.js.map +0 -1
- package/dist/util/ssr.d.ts +0 -3
- package/dist/util/ssr.js +0 -9
- package/dist/util/ssr.js.map +0 -1
- package/dist/util/view.d.ts +0 -10
- package/dist/util/view.js +0 -99
- package/dist/util/view.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../src/routes/ts-rest/draft.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const express_1 = require("express");
|
|
7
|
-
const app_1 = __importDefault(require("./app"));
|
|
8
|
-
const auth_1 = __importDefault(require("./auth"));
|
|
9
|
-
const installer_1 = __importDefault(require("./installer"));
|
|
10
|
-
const tokenAuth_1 = __importDefault(require("./tokenAuth"));
|
|
11
|
-
const me_1 = __importDefault(require("./me"));
|
|
12
|
-
const page_1 = __importDefault(require("./page"));
|
|
13
|
-
const page_preview_1 = __importDefault(require("./page-preview"));
|
|
14
|
-
const page_collab_1 = __importDefault(require("./page-collab"));
|
|
15
|
-
const presence_1 = __importDefault(require("./presence"));
|
|
16
|
-
const user_1 = __importDefault(require("./user"));
|
|
17
|
-
const comment_1 = __importDefault(require("./comment"));
|
|
18
|
-
const bookmark_1 = __importDefault(require("./bookmark"));
|
|
19
|
-
const revision_1 = __importDefault(require("./revision"));
|
|
20
|
-
const notification_1 = __importDefault(require("./notification"));
|
|
21
|
-
const backlink_1 = __importDefault(require("./backlink"));
|
|
22
|
-
const draft_1 = __importDefault(require("./draft"));
|
|
23
|
-
const autocomplete_1 = __importDefault(require("./autocomplete"));
|
|
24
|
-
const attachment_1 = __importDefault(require("./attachment"));
|
|
25
|
-
const search_1 = __importDefault(require("./search"));
|
|
26
|
-
const adminCrypto_1 = __importDefault(require("./adminCrypto"));
|
|
27
|
-
const admin_1 = __importDefault(require("./admin"));
|
|
28
|
-
const jwtAuth_1 = __importDefault(require("../../middlewares/jwtAuth"));
|
|
29
|
-
const jwtAdminRequired_1 = __importDefault(require("../../middlewares/jwtAdminRequired"));
|
|
30
|
-
const debug_1 = __importDefault(require("debug"));
|
|
31
|
-
const debug = (0, debug_1.default)('crowi:routes:ts-rest');
|
|
32
|
-
exports.default = (crowi, app) => {
|
|
33
|
-
debug('Mounting ts-rest routes...');
|
|
34
|
-
// ========================================
|
|
35
|
-
// Authentication Layer Structure
|
|
36
|
-
// ========================================
|
|
37
|
-
// 1. Public routes (no authentication required)
|
|
38
|
-
// 2. Authenticated routes (JWT authentication required)
|
|
39
|
-
// 3. Admin routes (JWT authentication + admin permission required)
|
|
40
|
-
// ========================================
|
|
41
|
-
// Public Router - No authentication required
|
|
42
|
-
const publicRouter = (0, express_1.Router)();
|
|
43
|
-
const appRouter = (0, app_1.default)(crowi, app);
|
|
44
|
-
const authRouter = (0, auth_1.default)(crowi, app); // Legacy - to be removed
|
|
45
|
-
const installerRouter = (0, installer_1.default)(crowi, app);
|
|
46
|
-
const tokenAuthRouter = (0, tokenAuth_1.default)(crowi, app);
|
|
47
|
-
debug('Mounting public routes (no auth required)');
|
|
48
|
-
publicRouter.use(appRouter);
|
|
49
|
-
publicRouter.use(authRouter);
|
|
50
|
-
publicRouter.use(installerRouter);
|
|
51
|
-
publicRouter.use(tokenAuthRouter);
|
|
52
|
-
// Authenticated Router - JWT authentication required
|
|
53
|
-
const authenticatedRouter = (0, express_1.Router)();
|
|
54
|
-
authenticatedRouter.use((0, jwtAuth_1.default)(crowi)); // Apply JWT auth to all routes
|
|
55
|
-
const meRouter = (0, me_1.default)(crowi, app);
|
|
56
|
-
const pageRouter = (0, page_1.default)(crowi, app);
|
|
57
|
-
const pagePreviewRouter = (0, page_preview_1.default)(crowi, app);
|
|
58
|
-
const pageCollabRouter = (0, page_collab_1.default)(crowi, app);
|
|
59
|
-
const presenceRouter = (0, presence_1.default)(crowi, app);
|
|
60
|
-
const userRouter = (0, user_1.default)(crowi, app);
|
|
61
|
-
const commentRouter = (0, comment_1.default)(crowi, app);
|
|
62
|
-
const bookmarkRouter = (0, bookmark_1.default)(crowi, app);
|
|
63
|
-
const revisionRouter = (0, revision_1.default)(crowi, app);
|
|
64
|
-
const notificationRouter = (0, notification_1.default)(crowi, app);
|
|
65
|
-
const backlinkRouter = (0, backlink_1.default)(crowi, app);
|
|
66
|
-
const draftRouter = (0, draft_1.default)(crowi, app);
|
|
67
|
-
const autocompleteRouter = (0, autocomplete_1.default)(crowi, app);
|
|
68
|
-
const attachmentRouter = (0, attachment_1.default)(crowi, app);
|
|
69
|
-
const searchRouter = (0, search_1.default)(crowi, app);
|
|
70
|
-
debug('Mounting authenticated routes (JWT required)');
|
|
71
|
-
authenticatedRouter.use(meRouter);
|
|
72
|
-
// Draft + autocomplete routes mount before pageRouter so the exact
|
|
73
|
-
// `/pages/drafts` and `/pages/autocomplete` paths are matched ahead
|
|
74
|
-
// of any broad `/pages/*` pattern.
|
|
75
|
-
authenticatedRouter.use(draftRouter);
|
|
76
|
-
authenticatedRouter.use(autocompleteRouter);
|
|
77
|
-
authenticatedRouter.use(pageRouter);
|
|
78
|
-
authenticatedRouter.use(pagePreviewRouter);
|
|
79
|
-
authenticatedRouter.use(pageCollabRouter);
|
|
80
|
-
authenticatedRouter.use(presenceRouter);
|
|
81
|
-
authenticatedRouter.use(userRouter);
|
|
82
|
-
authenticatedRouter.use(commentRouter);
|
|
83
|
-
authenticatedRouter.use(bookmarkRouter);
|
|
84
|
-
authenticatedRouter.use(revisionRouter);
|
|
85
|
-
authenticatedRouter.use(notificationRouter);
|
|
86
|
-
authenticatedRouter.use(backlinkRouter);
|
|
87
|
-
authenticatedRouter.use(attachmentRouter);
|
|
88
|
-
authenticatedRouter.use(searchRouter);
|
|
89
|
-
// Admin Router - JWT authentication + admin permission required
|
|
90
|
-
const adminRouter = (0, express_1.Router)();
|
|
91
|
-
adminRouter.use((0, jwtAdminRequired_1.default)(crowi)); // Apply JWT auth + admin check
|
|
92
|
-
const adminCryptoRouter = (0, adminCrypto_1.default)(crowi, app);
|
|
93
|
-
const adminSubRouter = (0, admin_1.default)(crowi, app);
|
|
94
|
-
debug('Mounting admin routes (JWT + admin required)');
|
|
95
|
-
adminRouter.use(adminCryptoRouter);
|
|
96
|
-
adminRouter.use(adminSubRouter);
|
|
97
|
-
// Mount all routers under /api/v2
|
|
98
|
-
app.use('/api/v2', publicRouter);
|
|
99
|
-
app.use('/api/v2', authenticatedRouter);
|
|
100
|
-
app.use('/api/v2', adminRouter);
|
|
101
|
-
debug('All ts-rest routes mounted successfully');
|
|
102
|
-
};
|
|
103
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/ts-rest/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const express_1 = require("@ts-rest/express");
|
|
7
|
-
const api_contract_1 = require("@crowi/api-contract");
|
|
8
|
-
const express_2 = require("express");
|
|
9
|
-
const debug_1 = __importDefault(require("debug"));
|
|
10
|
-
const debug = (0, debug_1.default)('crowi:routes:ts-rest:installer');
|
|
11
|
-
/**
|
|
12
|
-
* The ConfigService keeps a boot-time snapshot of all Config docs in memory,
|
|
13
|
-
* but `Config.applicationInstall()` writes new docs without refreshing it —
|
|
14
|
-
* so `req.config.crowi` is unreliable as an installed-state oracle. Always
|
|
15
|
-
* count from the DB instead, and refresh the cache after a successful install
|
|
16
|
-
* so other request paths see the new values without a server restart.
|
|
17
|
-
*/
|
|
18
|
-
const isAppInstalled = async (Config) => {
|
|
19
|
-
const count = await Config.countDocuments({ ns: 'crowi' }).exec();
|
|
20
|
-
return count > 0;
|
|
21
|
-
};
|
|
22
|
-
exports.default = (crowi, _app) => {
|
|
23
|
-
const s = (0, express_1.initServer)();
|
|
24
|
-
const router = (0, express_2.Router)();
|
|
25
|
-
const Config = crowi.model('Config');
|
|
26
|
-
const User = crowi.model('User');
|
|
27
|
-
const installerRouter = s.router(api_contract_1.apiContract.installer, {
|
|
28
|
-
getStatus: async () => {
|
|
29
|
-
const installed = await isAppInstalled(Config);
|
|
30
|
-
return {
|
|
31
|
-
status: 200,
|
|
32
|
-
body: { status: installed ? 'already_installed' : 'installer_required' },
|
|
33
|
-
};
|
|
34
|
-
},
|
|
35
|
-
createAdmin: async ({ body }) => {
|
|
36
|
-
if (await isAppInstalled(Config)) {
|
|
37
|
-
return {
|
|
38
|
-
status: 400,
|
|
39
|
-
body: { status: 'error', message: 'Application is already installed' },
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
const { name, username, email, password } = body.registerForm;
|
|
43
|
-
try {
|
|
44
|
-
const userData = await new Promise((resolve, reject) => {
|
|
45
|
-
// Seed admin language defaults to English; the legacy flow sniffed
|
|
46
|
-
// i18next from the request, but we don't have that on this pipeline.
|
|
47
|
-
User.createUserByEmailAndPassword(name, username, email, password, 'en', (err, user) => {
|
|
48
|
-
if (err)
|
|
49
|
-
return reject(err);
|
|
50
|
-
resolve(user);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
await new Promise((resolve, reject) => {
|
|
54
|
-
userData.makeAdmin((err) => {
|
|
55
|
-
if (err)
|
|
56
|
-
return reject(err);
|
|
57
|
-
resolve();
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
await Config.applicationInstall();
|
|
61
|
-
await crowi.getConfigService().load();
|
|
62
|
-
return { status: 200, body: { status: 'ok', message: 'Admin created successfully' } };
|
|
63
|
-
}
|
|
64
|
-
catch (err) {
|
|
65
|
-
const message = err.message;
|
|
66
|
-
debug('Error creating admin:', message);
|
|
67
|
-
return {
|
|
68
|
-
status: 200,
|
|
69
|
-
body: { status: 'error', errors: [`管理ユーザーの作成に失敗しました。${message}`] },
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
});
|
|
74
|
-
(0, express_1.createExpressEndpoints)(api_contract_1.apiContract.installer, installerRouter, router);
|
|
75
|
-
return router;
|
|
76
|
-
};
|
|
77
|
-
//# sourceMappingURL=installer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/routes/ts-rest/installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,410 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const express_1 = require("@ts-rest/express");
|
|
7
|
-
const api_contract_1 = require("@crowi/api-contract");
|
|
8
|
-
const express_2 = require("express");
|
|
9
|
-
const multer_1 = __importDefault(require("multer"));
|
|
10
|
-
const fs_1 = __importDefault(require("fs"));
|
|
11
|
-
const fileUploader_1 = __importDefault(require("../../util/fileUploader"));
|
|
12
|
-
const debug_1 = __importDefault(require("debug"));
|
|
13
|
-
const page_response_1 = require("../../util/page-response");
|
|
14
|
-
const debug = (0, debug_1.default)('crowi:routes:ts-rest:me');
|
|
15
|
-
exports.default = (crowi, _app) => {
|
|
16
|
-
const s = (0, express_1.initServer)();
|
|
17
|
-
const router = (0, express_2.Router)();
|
|
18
|
-
const User = crowi.model('User');
|
|
19
|
-
// Configure multer for file uploads
|
|
20
|
-
const upload = (0, multer_1.default)({ dest: crowi.tmpDir });
|
|
21
|
-
// Helper function to convert user document to profile response
|
|
22
|
-
const userToProfileResponse = (user, hasPassword) => ({
|
|
23
|
-
id: user._id.toString(),
|
|
24
|
-
username: user.username,
|
|
25
|
-
name: user.name,
|
|
26
|
-
email: user.email,
|
|
27
|
-
lang: user.lang,
|
|
28
|
-
image: user.image,
|
|
29
|
-
introduction: user.introduction || undefined,
|
|
30
|
-
googleId: user.googleId,
|
|
31
|
-
githubId: user.githubId,
|
|
32
|
-
hasPassword,
|
|
33
|
-
createdAt: user.createdAt.toISOString(),
|
|
34
|
-
});
|
|
35
|
-
const meRouter = s.router(api_contract_1.apiContract.me, {
|
|
36
|
-
getProfile: async ({ req }) => {
|
|
37
|
-
const user = req.user;
|
|
38
|
-
// Check if user has password set
|
|
39
|
-
const userWithSecrets = await user.populateSecrets();
|
|
40
|
-
const hasPassword = userWithSecrets.isPasswordSet();
|
|
41
|
-
return {
|
|
42
|
-
status: 200,
|
|
43
|
-
body: userToProfileResponse(user, hasPassword),
|
|
44
|
-
};
|
|
45
|
-
},
|
|
46
|
-
updateProfile: async ({ body, req }) => {
|
|
47
|
-
const user = req.user;
|
|
48
|
-
const { name, email, lang } = body.userForm;
|
|
49
|
-
// Check if email is valid (whitelist check)
|
|
50
|
-
if (!User.isEmailValid(email)) {
|
|
51
|
-
return {
|
|
52
|
-
status: 400,
|
|
53
|
-
body: {
|
|
54
|
-
status: 'error',
|
|
55
|
-
message: "You can't update to that email address",
|
|
56
|
-
errors: ["You can't update to that email address"],
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
// Check for duplicate email
|
|
61
|
-
const existingUser = await User.findOne({ email });
|
|
62
|
-
if (existingUser && !existingUser._id.equals(user._id)) {
|
|
63
|
-
debug('Email address was duplicated');
|
|
64
|
-
return {
|
|
65
|
-
status: 400,
|
|
66
|
-
body: {
|
|
67
|
-
status: 'error',
|
|
68
|
-
message: 'It can not be changed to that mail address',
|
|
69
|
-
errors: ['It can not be changed to that mail address'],
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
try {
|
|
74
|
-
// Update user fields
|
|
75
|
-
user.name = name;
|
|
76
|
-
user.email = email;
|
|
77
|
-
user.lang = lang;
|
|
78
|
-
await user.save();
|
|
79
|
-
// Check if user has password set
|
|
80
|
-
const userWithSecrets = await user.populateSecrets();
|
|
81
|
-
const hasPassword = userWithSecrets.isPasswordSet();
|
|
82
|
-
return {
|
|
83
|
-
status: 200,
|
|
84
|
-
body: userToProfileResponse(user, hasPassword),
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
const error = err;
|
|
89
|
-
const errorMessages = [];
|
|
90
|
-
if (error.errors) {
|
|
91
|
-
Object.keys(error.errors).forEach((e) => {
|
|
92
|
-
errorMessages.push(error.errors[e].message);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
errorMessages.push('Failed to update profile');
|
|
97
|
-
}
|
|
98
|
-
return {
|
|
99
|
-
status: 400,
|
|
100
|
-
body: {
|
|
101
|
-
status: 'error',
|
|
102
|
-
message: errorMessages[0],
|
|
103
|
-
errors: errorMessages,
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
uploadPicture: async ({ req, res }) => {
|
|
109
|
-
return new Promise((resolve) => {
|
|
110
|
-
const user = req.user;
|
|
111
|
-
const fileUploader = (0, fileUploader_1.default)(crowi);
|
|
112
|
-
// Handle file upload with multer
|
|
113
|
-
upload.single('file')(req, res, async (err) => {
|
|
114
|
-
if (err) {
|
|
115
|
-
debug('Multer error:', err);
|
|
116
|
-
return resolve({
|
|
117
|
-
status: 400,
|
|
118
|
-
body: {
|
|
119
|
-
status: 'error',
|
|
120
|
-
message: 'File upload error.',
|
|
121
|
-
errors: ['File upload error.'],
|
|
122
|
-
},
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
const tmpFile = req.file || null;
|
|
126
|
-
if (!tmpFile) {
|
|
127
|
-
return resolve({
|
|
128
|
-
status: 400,
|
|
129
|
-
body: {
|
|
130
|
-
status: 'error',
|
|
131
|
-
message: 'No file provided.',
|
|
132
|
-
errors: ['No file provided.'],
|
|
133
|
-
},
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
const tmpPath = tmpFile.path;
|
|
137
|
-
const name = tmpFile.filename + tmpFile.originalname;
|
|
138
|
-
const ext = name.match(/(.*)(?:\.([^.]+$))/)?.[2] || '';
|
|
139
|
-
const filePath = User.createUserPictureFilePath(user, ext);
|
|
140
|
-
const acceptableFileType = /image\/.+/;
|
|
141
|
-
if (!tmpFile.mimetype.match(acceptableFileType)) {
|
|
142
|
-
// Clean up temp file
|
|
143
|
-
fs_1.default.unlink(tmpPath, () => { });
|
|
144
|
-
return resolve({
|
|
145
|
-
status: 400,
|
|
146
|
-
body: {
|
|
147
|
-
status: 'error',
|
|
148
|
-
message: 'File type error. Only image files is allowed to set as user picture.',
|
|
149
|
-
errors: ['File type error. Only image files is allowed to set as user picture.'],
|
|
150
|
-
},
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
const tmpFileStream = fs_1.default.createReadStream(tmpPath, {
|
|
154
|
-
flags: 'r',
|
|
155
|
-
mode: 0o666,
|
|
156
|
-
autoClose: true,
|
|
157
|
-
});
|
|
158
|
-
try {
|
|
159
|
-
await fileUploader.uploadFile(filePath, tmpFile.mimetype, tmpFileStream, {});
|
|
160
|
-
const imageUrl = await fileUploader.generateUrl(filePath);
|
|
161
|
-
// Update user image
|
|
162
|
-
await new Promise((resolveUpdate, rejectUpdate) => {
|
|
163
|
-
user.updateImage(imageUrl, (updateErr) => {
|
|
164
|
-
if (updateErr) {
|
|
165
|
-
rejectUpdate(updateErr);
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
resolveUpdate();
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
// Clean up temp file
|
|
173
|
-
fs_1.default.unlink(tmpPath, (unlinkErr) => {
|
|
174
|
-
if (unlinkErr) {
|
|
175
|
-
debug('Error while deleting tmp file.', unlinkErr);
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
return resolve({
|
|
179
|
-
status: 200,
|
|
180
|
-
body: {
|
|
181
|
-
status: true,
|
|
182
|
-
url: imageUrl,
|
|
183
|
-
message: '',
|
|
184
|
-
},
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
catch (uploadErr) {
|
|
188
|
-
debug('Uploading error', uploadErr);
|
|
189
|
-
// Clean up temp file
|
|
190
|
-
fs_1.default.unlink(tmpPath, () => { });
|
|
191
|
-
return resolve({
|
|
192
|
-
status: 400,
|
|
193
|
-
body: {
|
|
194
|
-
status: 'error',
|
|
195
|
-
message: 'Error while uploading file',
|
|
196
|
-
errors: ['Error while uploading file'],
|
|
197
|
-
},
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
},
|
|
203
|
-
deletePicture: async ({ req }) => {
|
|
204
|
-
return new Promise((resolve) => {
|
|
205
|
-
const user = req.user;
|
|
206
|
-
// Delete user image
|
|
207
|
-
// TODO: Also delete from S3/storage
|
|
208
|
-
user.deleteImage((err) => {
|
|
209
|
-
if (err) {
|
|
210
|
-
debug('Error deleting image:', err);
|
|
211
|
-
return resolve({
|
|
212
|
-
status: 400,
|
|
213
|
-
body: {
|
|
214
|
-
status: 'error',
|
|
215
|
-
message: 'Failed to delete profile picture',
|
|
216
|
-
errors: ['Failed to delete profile picture'],
|
|
217
|
-
},
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
return resolve({
|
|
221
|
-
status: 200,
|
|
222
|
-
body: {
|
|
223
|
-
status: 'ok',
|
|
224
|
-
message: 'Deleted profile picture',
|
|
225
|
-
},
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
},
|
|
230
|
-
updatePassword: async ({ body, req }) => {
|
|
231
|
-
const user = req.user;
|
|
232
|
-
const { oldPassword, newPassword, newPasswordConfirm } = body;
|
|
233
|
-
// Check if email is set (required for password setting)
|
|
234
|
-
if (!user.isEmailSet()) {
|
|
235
|
-
return {
|
|
236
|
-
status: 400,
|
|
237
|
-
body: {
|
|
238
|
-
status: 'error',
|
|
239
|
-
message: 'Email must be set before setting password',
|
|
240
|
-
errors: ['Email must be set before setting password'],
|
|
241
|
-
},
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
// Get user with password field populated for validation
|
|
245
|
-
const userWithSecrets = await user.populateSecrets();
|
|
246
|
-
const hasPassword = userWithSecrets.isPasswordSet();
|
|
247
|
-
// If password is already set, validate old password
|
|
248
|
-
if (hasPassword) {
|
|
249
|
-
if (!oldPassword) {
|
|
250
|
-
return {
|
|
251
|
-
status: 400,
|
|
252
|
-
body: {
|
|
253
|
-
status: 'error',
|
|
254
|
-
message: 'Current password is required',
|
|
255
|
-
errors: ['Current password is required'],
|
|
256
|
-
},
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
// Validate old password (using legacy 6-character minimum for backward compatibility)
|
|
260
|
-
if (oldPassword.length < 6) {
|
|
261
|
-
return {
|
|
262
|
-
status: 400,
|
|
263
|
-
body: {
|
|
264
|
-
status: 'error',
|
|
265
|
-
message: 'Current password must be at least 6 characters',
|
|
266
|
-
errors: ['Current password must be at least 6 characters'],
|
|
267
|
-
},
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
if (!userWithSecrets.isPasswordValid(oldPassword)) {
|
|
271
|
-
return {
|
|
272
|
-
status: 400,
|
|
273
|
-
body: {
|
|
274
|
-
status: 'error',
|
|
275
|
-
message: 'Wrong current password',
|
|
276
|
-
errors: ['Wrong current password'],
|
|
277
|
-
},
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
// Update password
|
|
282
|
-
return new Promise((resolve) => {
|
|
283
|
-
userWithSecrets.updatePassword(newPassword, (err) => {
|
|
284
|
-
if (err) {
|
|
285
|
-
debug('Error updating password:', err);
|
|
286
|
-
const error = err;
|
|
287
|
-
const errorMessages = [];
|
|
288
|
-
if (error.errors) {
|
|
289
|
-
Object.keys(error.errors).forEach((e) => {
|
|
290
|
-
errorMessages.push(error.errors[e].message);
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
else {
|
|
294
|
-
errorMessages.push('Failed to update password');
|
|
295
|
-
}
|
|
296
|
-
return resolve({
|
|
297
|
-
status: 400,
|
|
298
|
-
body: {
|
|
299
|
-
status: 'error',
|
|
300
|
-
message: errorMessages[0] || 'Failed to update password',
|
|
301
|
-
errors: errorMessages,
|
|
302
|
-
},
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
return resolve({
|
|
306
|
-
status: 200,
|
|
307
|
-
body: {
|
|
308
|
-
status: 'ok',
|
|
309
|
-
message: 'Password updated',
|
|
310
|
-
},
|
|
311
|
-
});
|
|
312
|
-
});
|
|
313
|
-
});
|
|
314
|
-
},
|
|
315
|
-
getApiToken: async ({ req }) => {
|
|
316
|
-
const user = req.user;
|
|
317
|
-
try {
|
|
318
|
-
// apiToken is select: false, so we need to populate it explicitly
|
|
319
|
-
const userWithSecrets = await user.populateSecrets();
|
|
320
|
-
const apiToken = userWithSecrets.apiToken;
|
|
321
|
-
// If no API token exists yet, generate one
|
|
322
|
-
if (!apiToken) {
|
|
323
|
-
const updatedUser = await userWithSecrets.updateApiToken();
|
|
324
|
-
return {
|
|
325
|
-
status: 200,
|
|
326
|
-
body: {
|
|
327
|
-
status: 'ok',
|
|
328
|
-
apiToken: updatedUser.apiToken,
|
|
329
|
-
},
|
|
330
|
-
};
|
|
331
|
-
}
|
|
332
|
-
return {
|
|
333
|
-
status: 200,
|
|
334
|
-
body: {
|
|
335
|
-
status: 'ok',
|
|
336
|
-
apiToken,
|
|
337
|
-
},
|
|
338
|
-
};
|
|
339
|
-
}
|
|
340
|
-
catch (err) {
|
|
341
|
-
debug('Error getting API token:', err);
|
|
342
|
-
return {
|
|
343
|
-
status: 500,
|
|
344
|
-
body: {
|
|
345
|
-
status: 'error',
|
|
346
|
-
message: 'Failed to get API token',
|
|
347
|
-
},
|
|
348
|
-
};
|
|
349
|
-
}
|
|
350
|
-
},
|
|
351
|
-
resetApiToken: async ({ req }) => {
|
|
352
|
-
const user = req.user;
|
|
353
|
-
try {
|
|
354
|
-
// apiToken is select: false, so we need to populate it explicitly
|
|
355
|
-
const userWithSecrets = await user.populateSecrets();
|
|
356
|
-
const updatedUser = await userWithSecrets.updateApiToken();
|
|
357
|
-
return {
|
|
358
|
-
status: 200,
|
|
359
|
-
body: {
|
|
360
|
-
status: 'ok',
|
|
361
|
-
apiToken: updatedUser.apiToken,
|
|
362
|
-
},
|
|
363
|
-
};
|
|
364
|
-
}
|
|
365
|
-
catch (err) {
|
|
366
|
-
debug('Error resetting API token:', err);
|
|
367
|
-
return {
|
|
368
|
-
status: 500,
|
|
369
|
-
body: {
|
|
370
|
-
status: 'error',
|
|
371
|
-
message: 'Failed to update API token',
|
|
372
|
-
},
|
|
373
|
-
};
|
|
374
|
-
}
|
|
375
|
-
},
|
|
376
|
-
recentlyViewedPages: async ({ req }) => {
|
|
377
|
-
const user = req.user;
|
|
378
|
-
const Page = crowi.model('Page');
|
|
379
|
-
try {
|
|
380
|
-
// Read 6 to absorb at most one root-portal entry; the dropdown
|
|
381
|
-
// shows 5.
|
|
382
|
-
const ids = (await crowi.lru.get(user._id.toString(), 6)) ?? [];
|
|
383
|
-
if (ids.length === 0) {
|
|
384
|
-
return { status: 200, body: { pages: [] } };
|
|
385
|
-
}
|
|
386
|
-
const found = (await Page.findPagesByIds(ids));
|
|
387
|
-
const byId = new Map();
|
|
388
|
-
for (const p of found)
|
|
389
|
-
byId.set(p._id.toString(), p);
|
|
390
|
-
const ordered = [];
|
|
391
|
-
for (const id of ids) {
|
|
392
|
-
const p = byId.get(id);
|
|
393
|
-
if (!p || p.path === '/')
|
|
394
|
-
continue;
|
|
395
|
-
ordered.push(p);
|
|
396
|
-
if (ordered.length >= 5)
|
|
397
|
-
break;
|
|
398
|
-
}
|
|
399
|
-
return { status: 200, body: { pages: ordered.map((p) => (0, page_response_1.pageToResponse)(p)) } };
|
|
400
|
-
}
|
|
401
|
-
catch (err) {
|
|
402
|
-
debug('recentlyViewedPages: lru / populate failed: %s', err.message);
|
|
403
|
-
return { status: 200, body: { pages: [] } };
|
|
404
|
-
}
|
|
405
|
-
},
|
|
406
|
-
});
|
|
407
|
-
(0, express_1.createExpressEndpoints)(api_contract_1.apiContract.me, meRouter, router);
|
|
408
|
-
return router;
|
|
409
|
-
};
|
|
410
|
-
//# sourceMappingURL=me.js.map
|