miolo 3.0.0-beta.21 → 3.0.0-beta.210
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/bin/build/build.mjs +53 -0
- package/bin/build/build_bin.mjs +17 -0
- package/bin/build/cli/client.mjs +52 -0
- package/bin/build/cli/css.mjs +22 -0
- package/bin/build/cli/index.mjs +40 -0
- package/bin/build/cli/ssr.mjs +21 -0
- package/bin/build/server/aliases.mjs +112 -0
- package/bin/build/server/babel.config.js +24 -0
- package/bin/build/server/banner.mjs +20 -0
- package/bin/build/server/bundle.mjs +111 -0
- package/bin/build/server/fix.mjs +15 -0
- package/bin/build/server/index.mjs +69 -0
- package/bin/build/server/options.mjs +83 -0
- package/bin/create/auth.mjs +23 -0
- package/bin/create/copy.mjs +175 -0
- package/bin/create/docker.mjs +25 -0
- package/bin/create/index.mjs +137 -0
- package/bin/create/pkgjson.mjs +72 -0
- package/bin/create/prepare-template.mjs +158 -0
- package/bin/create/validation.mjs +27 -0
- package/bin/dev/dev.mjs +32 -23
- package/bin/dev/dev_start.mjs +6 -5
- package/bin/index.mjs +94 -52
- package/bin/prod-bin/create-bin.mjs +42 -27
- package/bin/prod-bin/run.mjs +13 -9
- package/bin/{prod-run → run}/pid.mjs +4 -4
- package/bin/run/restart.mjs +13 -0
- package/bin/run/start.mjs +18 -0
- package/bin/run/stop.mjs +20 -0
- package/bin/util.mjs +35 -11
- package/package.json +59 -39
- package/src/config/.env +34 -12
- package/src/config/defaults.mjs +253 -185
- package/src/config/env.mjs +40 -22
- package/src/config/index.mjs +19 -24
- package/src/config/util.mjs +25 -10
- package/src/db-conn.mjs +34 -0
- package/src/engines/cron/emails.mjs +10 -5
- package/src/engines/cron/index.mjs +45 -51
- package/src/engines/cron/init.mjs +16 -17
- package/src/engines/cron/ipsum.mjs +65 -60
- package/src/engines/cron/syscheck.mjs +30 -30
- package/src/engines/emailer/index.mjs +1 -2
- package/src/engines/emailer/queue.mjs +14 -20
- package/src/engines/emailer/transporter.mjs +86 -74
- package/src/engines/geoip/index.mjs +23 -28
- package/src/engines/http/index.mjs +26 -15
- package/src/engines/logger/buildErrorEmailBody.mjs +72 -0
- package/src/engines/logger/index.mjs +114 -122
- package/src/engines/logger/injectStackTrace.mjs +59 -0
- package/src/engines/logger/logger_mail.mjs +47 -61
- package/src/engines/logger/reopenTransportOnHupSignal.mjs +12 -13
- package/src/engines/parser/Parser.mjs +77 -60
- package/src/engines/parser/index.mjs +1 -1
- package/src/engines/schema/diffObjs.mjs +41 -0
- package/src/engines/schema/index.mjs +4 -0
- package/src/engines/schema/input.mjs +54 -0
- package/src/engines/schema/output.mjs +66 -0
- package/src/engines/socket/index.mjs +44 -46
- package/src/index.mjs +15 -10
- package/src/middleware/auth/basic.mjs +41 -40
- package/src/middleware/auth/custom.mjs +10 -13
- package/src/middleware/auth/guest.mjs +27 -27
- package/src/middleware/auth/passport/index.mjs +374 -0
- package/src/middleware/auth/passport/session/index.mjs +43 -0
- package/src/middleware/auth/{credentials → passport}/session/store.mjs +35 -15
- package/src/middleware/auth/passport/session/store_koa_redis.mjs +3 -0
- package/src/middleware/context/cache/index.mjs +78 -33
- package/src/middleware/context/cache/options.mjs +19 -21
- package/src/middleware/context/db.mjs +45 -20
- package/src/middleware/context/index.mjs +12 -12
- package/src/middleware/extra.mjs +4 -5
- package/src/middleware/http/body.mjs +25 -25
- package/src/middleware/http/catcher.mjs +81 -8
- package/src/middleware/http/custom_blacklist.mjs +19 -16
- package/src/middleware/http/headers.mjs +37 -34
- package/src/middleware/http/ratelimit.mjs +16 -23
- package/src/middleware/http/request.mjs +60 -65
- package/src/middleware/routes/catch_js_error.mjs +30 -23
- package/src/middleware/routes/robots.mjs +4 -7
- package/src/middleware/routes/router/crud/attachCrudRoutes.mjs +108 -90
- package/src/middleware/routes/router/crud/getCrudConfig.mjs +31 -55
- package/src/middleware/routes/router/defaults.mjs +6 -19
- package/src/middleware/routes/router/index.mjs +17 -21
- package/src/middleware/routes/router/queries/attachQueriesRoutes.mjs +227 -50
- package/src/middleware/routes/router/queries/getQueriesConfig.mjs +45 -55
- package/src/middleware/routes/router/utils.mjs +41 -26
- package/src/middleware/ssr/context.mjs +5 -7
- package/src/middleware/ssr/html.mjs +66 -43
- package/src/middleware/ssr/loader.mjs +11 -14
- package/src/middleware/ssr/ssr_render.mjs +39 -22
- package/src/middleware/static/index.mjs +33 -14
- package/src/middleware/vite/devserver.mjs +38 -22
- package/src/middleware/vite/watcher.mjs +12 -14
- package/src/server-cron.mjs +13 -8
- package/src/server-dev.mjs +13 -16
- package/src/server.mjs +49 -51
- package/template/.agent/skills/miolo-app-arch/SKILL.md +218 -0
- package/template/.agent/skills/miolo-auth/SKILL.md +450 -0
- package/template/.agent/skills/miolo-cli-router/SKILL.md +394 -0
- package/template/.agent/skills/miolo-database/SKILL.md +358 -0
- package/template/.agent/skills/miolo-react-patterns/SKILL.md +426 -0
- package/template/.agent/skills/miolo-routing/SKILL.md +326 -0
- package/template/.agent/skills/miolo-schemas/SKILL.md +329 -0
- package/template/.agent/skills/miolo-session-context/SKILL.md +397 -0
- package/template/.agent/skills/miolo-ssr/SKILL.md +433 -0
- package/template/.editorconfig +18 -0
- package/template/.env +120 -0
- package/template/biome.json +63 -0
- package/template/components.json +21 -0
- package/template/db/init.sh +89 -0
- package/template/db/sql/00_drop.sql +2 -0
- package/template/db/sql/01_users.sql +31 -0
- package/template/db/sql/02_todos.sql +20 -0
- package/template/docker/Dockerfile +13 -0
- package/template/docker/docker-compose.yaml +79 -0
- package/template/gitignore +42 -0
- package/template/jsconfig.json +18 -0
- package/template/package.json +88 -0
- package/template/postcss.config.js +9 -0
- package/template/src/cli/App.jsx +25 -0
- package/template/src/cli/components/JsonTreeViewer.jsx +128 -0
- package/template/src/cli/components/shadcn-io/spinner/index.jsx +232 -0
- package/template/src/cli/components/stepper.jsx +408 -0
- package/template/src/cli/components/ui/avatar.jsx +36 -0
- package/template/src/cli/components/ui/badge.jsx +31 -0
- package/template/src/cli/components/ui/breadcrumb.jsx +97 -0
- package/template/src/cli/components/ui/card.jsx +73 -0
- package/template/src/cli/components/ui/collapsible.jsx +16 -0
- package/template/src/cli/components/ui/dropdown-menu.jsx +179 -0
- package/template/src/cli/components/ui/field.jsx +217 -0
- package/template/src/cli/components/ui/input.jsx +19 -0
- package/template/src/cli/components/ui/label.jsx +17 -0
- package/template/src/cli/components/ui/pagination.jsx +99 -0
- package/template/src/cli/components/ui/patched/alert.jsx +56 -0
- package/template/src/cli/components/ui/patched/button.jsx +45 -0
- package/template/src/cli/components/ui/patched/dialog.jsx +114 -0
- package/template/src/cli/components/ui/patched/sidebar.jsx +660 -0
- package/template/src/cli/components/ui/select.jsx +141 -0
- package/template/src/cli/components/ui/separator.jsx +21 -0
- package/template/src/cli/components/ui/sheet.jsx +115 -0
- package/template/src/cli/components/ui/skeleton.jsx +13 -0
- package/template/src/cli/components/ui/sonner.jsx +22 -0
- package/template/src/cli/components/ui/switch.jsx +25 -0
- package/template/src/cli/components/ui/table.jsx +88 -0
- package/template/src/cli/components/ui/textarea.jsx +16 -0
- package/template/src/cli/components/ui/tooltip.jsx +45 -0
- package/template/src/cli/config/store_keys.mjs +2 -0
- package/template/src/cli/context/data/DataContext.jsx +5 -0
- package/template/src/cli/context/data/DataProvider.jsx +44 -0
- package/template/src/cli/context/data/useBreads.mjs +15 -0
- package/template/src/cli/context/data/useDataContext.mjs +4 -0
- package/template/src/cli/context/session/SessionContext.mjs +4 -0
- package/template/src/cli/context/session/SessionProvider.jsx +31 -0
- package/template/src/cli/context/session/makePermissioner.mjs +34 -0
- package/template/src/cli/context/session/useSessionContext.mjs +6 -0
- package/template/src/cli/context/theme/ThemeContext.mjs +4 -0
- package/template/src/cli/context/theme/ThemeProvider.jsx +49 -0
- package/template/src/cli/context/theme/useThemeContext.mjs +6 -0
- package/template/src/cli/context/ui/UIContext.jsx +5 -0
- package/template/src/cli/context/ui/UIProvider.jsx +16 -0
- package/template/src/cli/context/ui/useUIContext.mjs +4 -0
- package/template/src/cli/context/util.mjs +17 -0
- package/template/src/cli/entry-cli.jsx +33 -0
- package/template/src/cli/hooks/useIsMobile.mjs +19 -0
- package/template/src/cli/hooks/useStoragedState.mjs +63 -0
- package/template/src/cli/index.html +29 -0
- package/template/src/cli/layout/app-sidebar.jsx +25 -0
- package/template/src/cli/layout/main-layout.jsx +63 -0
- package/template/src/cli/layout/nav-last-todos.jsx +72 -0
- package/template/src/cli/layout/nav-main.jsx +39 -0
- package/template/src/cli/layout/nav-user.jsx +105 -0
- package/template/src/cli/layout/prop-switcher.jsx +93 -0
- package/template/src/cli/lib/utils.mjs +10 -0
- package/template/src/cli/pages/Index.jsx +13 -0
- package/template/src/cli/pages/IndexOffline.jsx +13 -0
- package/template/src/cli/pages/IndexOnline.jsx +18 -0
- package/template/src/cli/pages/dash/Dashboard.jsx +29 -0
- package/template/src/cli/pages/offline/Login.jsx +43 -0
- package/template/src/cli/pages/offline/LoginForm.jsx +115 -0
- package/template/src/cli/pages/security/Security.jsx +39 -0
- package/template/src/cli/pages/security/SecurityForm.jsx +106 -0
- package/template/src/cli/pages/todos/TodoActions.jsx +99 -0
- package/template/src/cli/pages/todos/TodoAdd.jsx +43 -0
- package/template/src/cli/pages/todos/TodoList.jsx +60 -0
- package/template/src/cli/pages/todos/Todos.jsx +23 -0
- package/template/src/cli/pages/todos/context/TodosContext.jsx +5 -0
- package/template/src/cli/pages/todos/context/TodosProvider.jsx +191 -0
- package/template/src/cli/pages/todos/context/useTodosContext.mjs +4 -0
- package/template/src/ns/models/Todo.mjs +29 -0
- package/template/src/ns/models/TodoList.mjs +8 -0
- package/template/src/ns/models/User.mjs +40 -0
- package/template/src/server/bot/check_today.mjs +10 -0
- package/template/src/server/io/cache/base.mjs +21 -0
- package/template/src/server/io/db/filter.mjs +92 -0
- package/template/src/server/io/db/todos/delete.mjs +29 -0
- package/template/src/server/io/db/todos/find.mjs +13 -0
- package/template/src/server/io/db/todos/read.mjs +83 -0
- package/template/src/server/io/db/todos/toggle.mjs +37 -0
- package/template/src/server/io/db/todos/upsave.mjs +32 -0
- package/template/src/server/io/db/triggers/user.mjs +13 -0
- package/template/src/server/io/db/users/auth.mjs +132 -0
- package/template/src/server/io/db/users/pwd.mjs +38 -0
- package/template/src/server/io/db/users/save.mjs +17 -0
- package/template/src/server/miolo/auth/basic.mjs +15 -0
- package/template/src/server/miolo/auth/guest.mjs +3 -0
- package/template/src/server/miolo/auth/passport.mjs +73 -0
- package/template/src/server/miolo/cache.mjs +11 -0
- package/template/src/server/miolo/cron/foo.mjs +7 -0
- package/template/src/server/miolo/cron/index.mjs +28 -0
- package/template/src/server/miolo/cron/invalidate.mjs +21 -0
- package/template/src/server/miolo/db.mjs +36 -0
- package/template/src/server/miolo/http.mjs +14 -0
- package/template/src/server/miolo/index.mjs +43 -0
- package/template/src/server/miolo/routes/crud.mjs +16 -0
- package/template/src/server/miolo/routes/index.mjs +8 -0
- package/template/src/server/miolo/ssr/entry-server.jsx +13 -0
- package/template/src/server/miolo/ssr/loader.mjs +18 -0
- package/template/src/server/routes/index.mjs +66 -0
- package/template/src/server/routes/todos/mod.mjs +52 -0
- package/template/src/server/routes/todos/read.mjs +45 -0
- package/template/src/server/routes/todos/special.mjs +47 -0
- package/template/src/server/routes/users/user.mjs +54 -0
- package/template/src/server/server.mjs +10 -0
- package/template/src/server/utils/crypt.mjs +38 -0
- package/template/src/server/utils/io.mjs +15 -0
- package/template/src/server/utils/pwdfor.mjs +25 -0
- package/template/src/server/utils/schema.mjs +22 -0
- package/template/src/static/img/default/profile.png +0 -0
- package/template/src/static/img/favicon.ico +0 -0
- package/template/src/static/img/miolo_logo.png +0 -0
- package/template/src/static/img/miolo_name.png +0 -0
- package/template/src/static/public/manifest.json +21 -0
- package/template/src/static/public/sw.js +79 -0
- package/template/src/static/style/globals.css +156 -0
- package/template/src/static/style/json-tree.css +54 -0
- package/template/src/static/style/skeleton.css +49 -0
- package/bin/prod-build/build-client.mjs +0 -67
- package/bin/prod-build/build-server.mjs +0 -58
- package/bin/prod-run/restart.mjs +0 -9
- package/bin/prod-run/start.mjs +0 -15
- package/bin/prod-run/stop.mjs +0 -20
- package/src/engines/logger/verify.mjs +0 -22
- package/src/middleware/auth/credentials/index.mjs +0 -151
- package/src/middleware/auth/credentials/session/index.mjs +0 -24
- package/src/middleware/auth/credentials/session/store_koa_redis.mjs +0 -3
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import path from 'node:path'
|
|
3
|
-
import { readFile, writeFile} from 'node:fs/promises'
|
|
4
|
-
import { build } from 'vite'
|
|
5
|
-
import {xeiraBundle} from 'xeira'
|
|
6
|
-
import { cleanFolder } from '../util.mjs'
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export async function _fixProdBuild(appName, filePath) {
|
|
10
|
-
try {
|
|
11
|
-
const content = await readFile(filePath, 'utf8')
|
|
12
|
-
const newContent = content.replace(
|
|
13
|
-
/var key = crypto\.pseudoRandomBytes\(32\)/g,
|
|
14
|
-
'var key = crypto.randomBytes(32)'
|
|
15
|
-
)
|
|
16
|
-
await writeFile(filePath, newContent, 'utf8')
|
|
17
|
-
console.log(`[${appName}][prod] Fixed server build (prod)!`)
|
|
18
|
-
} catch (error) {
|
|
19
|
-
console.error(`[${appName}][prod] Error fixing server build (prod): ${error}`)
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export default async function(appName, ssrEntry, ssrDest, srvEntry, srvDest) {
|
|
24
|
-
console.log(`[${appName}][prod] Building first the SSR entry ${ssrEntry}`)
|
|
25
|
-
|
|
26
|
-
// clean dest folder
|
|
27
|
-
cleanFolder(srvDest)
|
|
28
|
-
|
|
29
|
-
// Build SSR entry
|
|
30
|
-
await build({
|
|
31
|
-
build: {
|
|
32
|
-
outDir: path.resolve(process.cwd(), ssrDest),
|
|
33
|
-
ssr: path.resolve(process.cwd(), ssrEntry),
|
|
34
|
-
rollupOptions: {},
|
|
35
|
-
},
|
|
36
|
-
// server ssr's entry must bundle externals
|
|
37
|
-
ssr: {
|
|
38
|
-
noExternal: true
|
|
39
|
-
}
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
console.log(`[${appName}][prod] Building server entry for ${srvEntry}`)
|
|
43
|
-
|
|
44
|
-
const serverExt = 'node.bundle.mjs'
|
|
45
|
-
await xeiraBundle({
|
|
46
|
-
source_index: srvEntry,
|
|
47
|
-
target: 'node',
|
|
48
|
-
bundle_folder: srvDest,
|
|
49
|
-
bundle_name: appName,
|
|
50
|
-
bundle_extension: serverExt,
|
|
51
|
-
bundler: 'rollup',
|
|
52
|
-
bundle_node_polyfill: true,
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
console.log(`[${appName}][prod] Fixing server build (prod)...`)
|
|
56
|
-
const destFile = path.join(process.cwd(), `${srvDest}/${appName}.${serverExt}`)
|
|
57
|
-
await _fixProdBuild(appName, destFile)
|
|
58
|
-
}
|
package/bin/prod-run/restart.mjs
DELETED
package/bin/prod-run/start.mjs
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { pidFileCreate } from "./pid.mjs"
|
|
2
|
-
|
|
3
|
-
export default async function start(appName, destFile) {
|
|
4
|
-
|
|
5
|
-
// Start server
|
|
6
|
-
console.log(`[${appName}][prod][start] Starting server from ${destFile}...`)
|
|
7
|
-
|
|
8
|
-
const srv_module = await import(destFile)
|
|
9
|
-
const server = srv_module.default
|
|
10
|
-
|
|
11
|
-
const pid = pidFileCreate(appName)
|
|
12
|
-
console.log(`[${appName}][prod][start] Starting server. PID is ${pid}...`)
|
|
13
|
-
|
|
14
|
-
await server()
|
|
15
|
-
}
|
package/bin/prod-run/stop.mjs
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { pidFileRead } from "./pid.mjs"
|
|
2
|
-
|
|
3
|
-
export default async function stop(appName) {
|
|
4
|
-
// stop server by killin gprocess
|
|
5
|
-
console.log(`[${appName}][prod][stop] Stopping server...`)
|
|
6
|
-
|
|
7
|
-
try {
|
|
8
|
-
const pid = pidFileRead(appName)
|
|
9
|
-
console.log(`[${appName}][prod][stop] Killing current process with PID ${pid}`)
|
|
10
|
-
|
|
11
|
-
process.kill(pid, 'SIGKILL')
|
|
12
|
-
|
|
13
|
-
return 1
|
|
14
|
-
} catch(_) {
|
|
15
|
-
console.log(`[${appName}][prod][stop] No current process to kill`)
|
|
16
|
-
console.error(_)
|
|
17
|
-
|
|
18
|
-
return 0
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import {make_logger} from './index.mjs'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
function verify_logger(config) {
|
|
5
|
-
const logger= make_logger(config)
|
|
6
|
-
try {
|
|
7
|
-
console.info('[miolo][Verify][LOGGER] Verifying...')
|
|
8
|
-
|
|
9
|
-
logger.error('Error message')
|
|
10
|
-
logger.warn('Warn message')
|
|
11
|
-
logger.info('Info message')
|
|
12
|
-
logger.verbose('Verbose message')
|
|
13
|
-
logger.debug('Debug message')
|
|
14
|
-
logger.silly('Silly message')
|
|
15
|
-
|
|
16
|
-
} catch(e) {
|
|
17
|
-
console.error('[miolo][Verify][LOGGER] ERROR: ')
|
|
18
|
-
console.error(e)
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export {verify_logger}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-unused-vars*/
|
|
2
|
-
import passport from 'koa-passport'
|
|
3
|
-
import LocalStrategy from 'passport-local'
|
|
4
|
-
import Router from '@koa/router'
|
|
5
|
-
import { init_session_middleware } from './session/index.mjs'
|
|
6
|
-
|
|
7
|
-
// passport: {
|
|
8
|
-
// get_user_id: (user, done) => done(null, user.id), // default
|
|
9
|
-
// find_user_by_id: (id, done) => done(null, {id: 1}), // ok=> done(null, user) err=> done(error, null)
|
|
10
|
-
// local_auth_user: (username, password, done) => done(null, {id: 1})
|
|
11
|
-
// // auth=> done(null, user) noauth=> done(null, false, {message: ''}) err=> done(error, null)
|
|
12
|
-
// }
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const def_get_user_id = (user, done, miolo) => done(null, user.id)
|
|
16
|
-
|
|
17
|
-
const def_find_user_by_id = (id, done, miolo) => {
|
|
18
|
-
const err = Error('You need to define auth.passport.find_user_by_id')
|
|
19
|
-
done(err, null)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const def_local_auth_user = (username, password, done, miolo) => {
|
|
23
|
-
const err = Error('You need to define auth.passport.local_auth_user')
|
|
24
|
-
done(err, null)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const init_credentials_auth_middleware = ( app, options, sessionConfig, cacheConfig) => {
|
|
29
|
-
const {get_user_id, find_user_by_id, local_auth_user,
|
|
30
|
-
url_login, url_logout, url_login_redirect, url_logout_redirect} = options
|
|
31
|
-
|
|
32
|
-
//const local_options = {}
|
|
33
|
-
|
|
34
|
-
// fallback funcs
|
|
35
|
-
const get_user_id_f = get_user_id || def_get_user_id
|
|
36
|
-
const find_user_by_id_f = find_user_by_id || def_find_user_by_id
|
|
37
|
-
const local_auth_user_f = local_auth_user || def_local_auth_user
|
|
38
|
-
const url_login_f = url_login || '/login'
|
|
39
|
-
const url_logout_f = url_logout || '/logout'
|
|
40
|
-
|
|
41
|
-
// init passport
|
|
42
|
-
const serialize_user = (user, done) => {
|
|
43
|
-
process.nextTick(function() {
|
|
44
|
-
get_user_id_f(user, done, app.context.miolo)
|
|
45
|
-
})
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const deserialize_user = (id, done) => {
|
|
49
|
-
process.nextTick(function() {
|
|
50
|
-
find_user_by_id_f(id, done, app.context.miolo)
|
|
51
|
-
})
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const local_strategy= new LocalStrategy.Strategy (
|
|
55
|
-
(username, password, done) => {
|
|
56
|
-
local_auth_user_f(username, password, done, app.context.miolo)
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
init_session_middleware(app, sessionConfig, cacheConfig)
|
|
60
|
-
|
|
61
|
-
passport.serializeUser(serialize_user)
|
|
62
|
-
passport.deserializeUser(deserialize_user)
|
|
63
|
-
passport.use(local_strategy)
|
|
64
|
-
|
|
65
|
-
app.use(passport.initialize())
|
|
66
|
-
app.use(passport.session())
|
|
67
|
-
|
|
68
|
-
async function _ensure_ctx_user (ctx, next) {
|
|
69
|
-
try{
|
|
70
|
-
if (ctx.session.authenticated) {
|
|
71
|
-
ctx.session.user = ctx.state.user
|
|
72
|
-
}
|
|
73
|
-
} catch(_) {}
|
|
74
|
-
await next()
|
|
75
|
-
}
|
|
76
|
-
app.use(_ensure_ctx_user)
|
|
77
|
-
|
|
78
|
-
// handle auth routes
|
|
79
|
-
const handleLogIn = (ctx, next) => {
|
|
80
|
-
return passport.authenticate('local', async function(err, user, info, _status) {
|
|
81
|
-
if (user === false) {
|
|
82
|
-
ctx.session.user = undefined
|
|
83
|
-
ctx.session.authenticated = false
|
|
84
|
-
|
|
85
|
-
ctx.body = {
|
|
86
|
-
user: undefined,
|
|
87
|
-
authenticated: false,
|
|
88
|
-
info: info,
|
|
89
|
-
error: err
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// This will show error logs on the catcher middleware
|
|
93
|
-
// ctx.throw(401)
|
|
94
|
-
|
|
95
|
-
ctx.response.status= 401
|
|
96
|
-
} else {
|
|
97
|
-
|
|
98
|
-
ctx.session.user = ctx.state.user
|
|
99
|
-
ctx.session.authenticated = true
|
|
100
|
-
|
|
101
|
-
ctx.body = {
|
|
102
|
-
user : user,
|
|
103
|
-
authenticated: true
|
|
104
|
-
}
|
|
105
|
-
if (url_login_redirect!=undefined) {
|
|
106
|
-
ctx.redirect(url_login_redirect)
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const res= await ctx.login(user)
|
|
110
|
-
|
|
111
|
-
return res
|
|
112
|
-
}
|
|
113
|
-
})(ctx)
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const handleLogOut = async (ctx, next) => {
|
|
117
|
-
if (ctx.session.authenticated) {
|
|
118
|
-
ctx.session.user = undefined
|
|
119
|
-
ctx.session.authenticated = false
|
|
120
|
-
|
|
121
|
-
await ctx.logout()
|
|
122
|
-
ctx.body = {
|
|
123
|
-
user: undefined,
|
|
124
|
-
authenticated: false
|
|
125
|
-
}
|
|
126
|
-
if (url_logout_redirect!=undefined) {
|
|
127
|
-
ctx.redirect(url_logout_redirect)
|
|
128
|
-
}
|
|
129
|
-
} else {
|
|
130
|
-
|
|
131
|
-
ctx.body = {
|
|
132
|
-
user: undefined,
|
|
133
|
-
authenticated: false
|
|
134
|
-
}
|
|
135
|
-
// This will show error logs on the catcher middleware
|
|
136
|
-
// ctx.throw(401)
|
|
137
|
-
|
|
138
|
-
ctx.response.status= 401
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// Init the router
|
|
143
|
-
const login_router = new Router()
|
|
144
|
-
login_router.post(url_login_f, handleLogIn)
|
|
145
|
-
login_router.get (url_logout_f, handleLogOut)
|
|
146
|
-
login_router.post(url_logout_f, handleLogOut)
|
|
147
|
-
|
|
148
|
-
app.use(login_router.routes())
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export {init_credentials_auth_middleware}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { createSession } from 'koa-session'
|
|
2
|
-
// import store_koa_redis from './store_koa_redis.mjs'
|
|
3
|
-
import {init_session_cache_store} from './store.mjs'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Middleware for session
|
|
7
|
-
* @param ctx
|
|
8
|
-
* @param next
|
|
9
|
-
*/
|
|
10
|
-
function init_session_middleware(app, sessionConfig, cacheConfig) {
|
|
11
|
-
const store = init_session_cache_store(cacheConfig, app.context.miolo.logger)
|
|
12
|
-
|
|
13
|
-
app.keys = [sessionConfig.secret || '*secret*']
|
|
14
|
-
|
|
15
|
-
const options= {
|
|
16
|
-
// store: store_koa_redis,
|
|
17
|
-
store,
|
|
18
|
-
...sessionConfig.options || {}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
app.use(createSession(options, app))
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export {init_session_middleware}
|