{"_id":"@aria-iam/vue","_rev":"6-121bfa4cd975397eafc8cd32c3b515b0","name":"@aria-iam/vue","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"@aria-iam/vue","version":"1.0.0","keywords":["iam","auth","authentication","jwt","sso","vue","vue3","typescript"],"author":{"url":"https://github.com/SaraTuma","name":"Sara David Tuma"},"license":"MIT","_id":"@aria-iam/vue@1.0.0","maintainers":[{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"}],"homepage":"https://github.com/SaraTuma/aria-sdk#readme","bugs":{"url":"https://github.com/SaraTuma/aria-sdk/issues"},"dist":{"shasum":"7fc165a3756f7d5a2cc61f5c2f643eafd737bd6a","tarball":"https://registry.npmjs.org/@aria-iam/vue/-/vue-1.0.0.tgz","fileCount":9,"integrity":"sha512-hKEDMnYo9LIv72HAANri5MdWtz/tke+OkQXxrbbYyDe0iJ4MXzicR4mZWoIObkCgtynJM7KTv3WXGzLDgiqiwQ==","signatures":[{"sig":"MEQCIFtc9WfA5RMfN4LaVdqC1mwRmHQQxKP2Z6kohvZs1PNCAiBR2FxF2NE2vXJsquRIlHCGjwe1LRU59F8fZTDFik9INg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11295},"main":"src/index.ts","types":"src/index.ts","gitHead":"7982a46eb6ac39fc3ef1d1f36085edfcf28cebf3","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"},"repository":{"url":"git+https://github.com/SaraTuma/aria-sdk.git","type":"git","directory":"vue"},"_npmVersion":"10.9.3","description":"ARIA authentication Vue 3 adapter — AriaIamPlugin, useAuth, usePermissions and ProtectedRoute","directories":{},"_nodeVersion":"22.20.0","dependencies":{"@aria-iam/core":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_1.0.0_1782649619901_0.9158237483364713","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aria-iam/vue","version":"1.0.1","keywords":["iam","auth","authentication","jwt","sso","vue","vue3","typescript"],"author":{"url":"https://github.com/SaraTuma","name":"Sara David Tuma"},"license":"MIT","_id":"@aria-iam/vue@1.0.1","maintainers":[{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"}],"homepage":"https://github.com/SaraTuma/aria-sdk#readme","bugs":{"url":"https://github.com/SaraTuma/aria-sdk/issues"},"dist":{"shasum":"5e58e8f0c19e4626bbffaad8e86fe390cd9a515a","tarball":"https://registry.npmjs.org/@aria-iam/vue/-/vue-1.0.1.tgz","fileCount":9,"integrity":"sha512-gBYgk+QTG0dZJJ6sTkBO39EV5pB5zQivyIzsBk4jwu0JBjEkQabvyzZ1Twqow3Lt6XL9OPfpxWvgXTBdZ42XsA==","signatures":[{"sig":"MEQCIEfyMK+S3QV2z/XFg7XS1+GpFTsTm/Qj+QN6XKmcAlSTAiBpMx4o28rLS3278X9slPB3+EG+BzWzsp8X70ZeqnMD3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11296},"main":"src/index.ts","types":"src/index.ts","gitHead":"816da3d9eff7f10d37efbf74bd0af1592674d55c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"},"repository":{"url":"git+https://github.com/SaraTuma/aria-sdk.git","type":"git","directory":"vue"},"_npmVersion":"10.9.3","description":"ARIA authentication Vue 3 adapter — AriaIamPlugin, useAuth, usePermissions and ProtectedRoute","directories":{},"_nodeVersion":"22.20.0","dependencies":{"@aria-iam/core":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_1.0.1_1782723486444_0.4682282180946349","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aria-iam/vue","version":"1.0.2","keywords":["iam","auth","authentication","jwt","sso","vue","vue3","typescript"],"author":{"url":"https://github.com/SaraTuma","name":"Sara David Tuma"},"license":"MIT","_id":"@aria-iam/vue@1.0.2","maintainers":[{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"}],"homepage":"https://github.com/SaraTuma/aria-sdk#readme","bugs":{"url":"https://github.com/SaraTuma/aria-sdk/issues"},"dist":{"shasum":"04a0c56eaf648a867fda91919f4a9764f152738b","tarball":"https://registry.npmjs.org/@aria-iam/vue/-/vue-1.0.2.tgz","fileCount":11,"integrity":"sha512-niqi23e+ZHWUheWs+Bkx+eQmTJ5WFHlNZqnlTi8jomPBMTbEcF8eJoGZw21YHhY9F038JIduAsy/7V7y2BAtTA==","signatures":[{"sig":"MEUCIG6UARtxxVlQYg9HXqAfqnfUo6Zat+KXQ0IEN+G8NDAPAiEAmyihztbr8v4fARrjl6/uo7265kETHeOQoekbBNeeb/Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14166},"main":"src/index.ts","types":"src/index.ts","gitHead":"816da3d9eff7f10d37efbf74bd0af1592674d55c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"},"repository":{"url":"git+https://github.com/SaraTuma/aria-sdk.git","type":"git","directory":"vue"},"_npmVersion":"10.9.3","description":"ARIA authentication Vue 3 adapter — AriaIamPlugin, useAuth, usePermissions and ProtectedRoute","directories":{},"_nodeVersion":"22.20.0","dependencies":{"@aria-iam/core":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_1.0.2_1782764896539_0.3716705738330015","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aria-iam/vue","version":"1.0.3","keywords":["iam","auth","authentication","jwt","sso","vue","vue3","typescript"],"author":{"url":"https://github.com/SaraTuma","name":"Sara David Tuma"},"license":"MIT","_id":"@aria-iam/vue@1.0.3","maintainers":[{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"}],"homepage":"https://github.com/SaraTuma/aria-sdk#readme","bugs":{"url":"https://github.com/SaraTuma/aria-sdk/issues"},"dist":{"shasum":"32e6d1c254049819900d7f40b559b3b87f96f365","tarball":"https://registry.npmjs.org/@aria-iam/vue/-/vue-1.0.3.tgz","fileCount":11,"integrity":"sha512-rVRiNhYOG1SUF5Mel7UnoexTQaKsYPj/ssHvvjo0d0Qk6NEg/kS/zStSQEeqL7J0wBTFdexc47FvMo7IGVQx8g==","signatures":[{"sig":"MEUCIEOm/kLPOkdaG1gm7uG9hK6D4Hcf+M5QHtyRJZE85/i0AiEAkYiuAYN8hqBgnGlOKSZl+6hgFTQEbKUHJDhbFuXF9eY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19596},"main":"src/index.ts","types":"src/index.ts","gitHead":"56bfca9109cb42b9be2fc4517efeb53f0ee2facb","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"},"repository":{"url":"git+https://github.com/SaraTuma/aria-sdk.git","type":"git","directory":"vue"},"_npmVersion":"10.9.3","description":"ARIA authentication Vue 3 adapter — AriaIamPlugin, useAuth, usePermissions and ProtectedRoute","directories":{},"_nodeVersion":"22.20.0","dependencies":{"@aria-iam/core":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_1.0.3_1784446292682_0.6426262205558855","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aria-iam/vue","version":"1.0.4","keywords":["iam","auth","authentication","jwt","sso","vue","vue3","typescript"],"author":{"url":"https://github.com/SaraTuma","name":"Sara David Tuma"},"license":"MIT","_id":"@aria-iam/vue@1.0.4","maintainers":[{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"}],"homepage":"https://github.com/SaraTuma/aria-sdk#readme","bugs":{"url":"https://github.com/SaraTuma/aria-sdk/issues"},"dist":{"shasum":"d0ff69983371f410d6fe1089f86db1a5288a4881","tarball":"https://registry.npmjs.org/@aria-iam/vue/-/vue-1.0.4.tgz","fileCount":26,"integrity":"sha512-jNBOb3bG+kRh3xUeLqVML44VfnCDbJ8/mV/MvtSK+ZBTDKEJsd/QiGijPAatu9WzxApzMF2BhcvkbzYC+frzsw==","signatures":[{"sig":"MEUCIEa+fgxa1/ljEGljJR3qolHchAPQBNYjZ7AYSM22MpfWAiEA5nF7rD5eoB5ZhRkptGibgnrUIDv+9r0+Vko94Gg3PBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBZQU/48Zj0+uDjPU0TpzjberL0cY0YG/9fMhxWdKl09AiBfALDfXolhD0wl4Xr8K0JP0qXTC11lN+p3hCnq3FlStg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31431},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"92d1da9c167ece67abf7e535fdc93ea073a39528","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"vite build && vue-tsc --project tsconfig.build.json"},"_npmUser":{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"},"repository":{"url":"git+https://github.com/SaraTuma/aria-sdk.git","type":"git","directory":"vue"},"_npmVersion":"10.9.3","description":"ARIA authentication Vue 3 adapter — AriaIamPlugin, useAuth, usePermissions and ProtectedRoute","directories":{},"_nodeVersion":"22.20.0","dependencies":{"@aria-iam/core":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_1.0.4_1789823036908_0.6258292706458899","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"_id":"@aria-iam/vue@1.0.6","bugs":{"url":"https://github.com/SaraTuma/aria-sdk/issues"},"dist":{"shasum":"1c0f18341b7430fbe13dcbad00897c3fe3b67e34","tarball":"https://registry.npmjs.org/@aria-iam/vue/-/vue-1.0.6.tgz","fileCount":26,"integrity":"sha512-eamWalPmIFSOXBY+PFJE3Z59WnBj4JbgguPc4ru3Hoz4Z4qE6tU88utBqQvsv3E3W20qJkklxJDxYu07ZY+Dbg==","signatures":[{"sig":"MEYCIQC+ucZ1pasxIMrbnEfqWHWl3iYHc/Ih0FeCjZXxsh2nzwIhAMj1TUgh9S8n11TvHXnURurlxU7QHoR7ly7AhqxhTjXX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDxYp8/Rt4zcUVq8Y/KYRZHvxe3tTKfauazZYBGkb+1uQIhAOFFc3M3odP6ex6uNCrQlTw9T0Yq98EcrbthX7ZdBMTW"}],"unpackedSize":31510},"main":"dist/index.js","name":"@aria-iam/vue","types":"dist/index.d.ts","author":{"url":"https://github.com/SaraTuma","name":"Sara David Tuma"},"module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"c76ce9a9d4ed3fe9e20fe0b8aad9e48980bff0fb","license":"MIT","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"vite build && vue-tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"version":"1.0.6","_npmUser":{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"},"homepage":"https://github.com/SaraTuma/aria-sdk#readme","keywords":["iam","auth","authentication","jwt","sso","vue","vue3","typescript"],"repository":{"url":"git+https://github.com/SaraTuma/aria-sdk.git","type":"git","directory":"vue"},"_npmVersion":"10.9.3","description":"ARIA authentication Vue 3 adapter — AriaIamPlugin, useAuth, usePermissions and ProtectedRoute","directories":{},"maintainers":[{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"}],"_nodeVersion":"22.20.0","dependencies":{"@aria-iam/core":"^1.0.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.0.0","typescript":">=5.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue_1.0.6_1790603644484_0.6153503627744812"}}},"time":{"created":"2026-06-28T12:26:59.717Z","modified":"2026-09-28T13:54:04.913Z","1.0.0":"2026-06-28T12:27:00.039Z","1.0.1":"2026-06-29T08:58:06.564Z","1.0.2":"2026-06-29T20:28:16.671Z","1.0.3":"2026-07-19T07:31:32.818Z","1.0.4":"2026-09-19T13:03:57.010Z","1.0.6":"2026-09-28T13:54:04.576Z"},"bugs":{"url":"https://github.com/SaraTuma/aria-sdk/issues"},"author":{"url":"https://github.com/SaraTuma","name":"Sara David Tuma"},"license":"MIT","homepage":"https://github.com/SaraTuma/aria-sdk#readme","keywords":["iam","auth","authentication","jwt","sso","vue","vue3","typescript"],"repository":{"url":"git+https://github.com/SaraTuma/aria-sdk.git","type":"git","directory":"vue"},"description":"ARIA authentication Vue 3 adapter — AriaIamPlugin, useAuth, usePermissions and ProtectedRoute","maintainers":[{"name":"sara-tuma","email":"saradavidtuma07@gmail.com"}],"readme":"# @aria-iam/vue\n\n> 🌐 Língua: [English](./README.md) · **Português**\n\nAdaptador Vue 3 para a plataforma **ARIA IAM**. Disponibiliza um plugin, composables, um componente e uma directiva que ligam a tua app Vue 3 ao sistema de autenticação e permissões ARIA.\n\nParte do [ARIA SDK](https://github.com/SaraTuma/aria-sdk).\n\n## Pré-requisitos\n\nAntes de usar este pacote precisas de:\n\n1. Um **backend ARIA IAM** a correr e acessível (fornecido pela tua organização).\n2. Uma **aplicação registada** no painel de administração ARIA — isso dá-te:\n   - `appId` — o ID numérico da tua app no ARIA (ex.: `2`).\n   - `loginUrl` — o URL da página de login central do ARIA.\n3. **Permissões registadas** no painel ARIA para a tua app. Cada permissão tem um `pkFuncionalidade` — um ID numérico (ex.: `14`) que usas no teu código para mostrar ou esconder elementos da interface.\n\n> **Nota sobre o `appId`:** este valor é usado em duas formas diferentes. Na configuração do `AriaIamPlugin` é uma **string** (fica guardado num cookie que diz à página de login do ARIA de que app estás a vir). Em `usePermissions().load()` e dentro da tua função `fetchPermissions`, é um **número** (é enviado ao teu backend como `pkAplicacao`). Os dois referem-se ao mesmo ID de app — só tens de manter os tipos corretos ao copiar os exemplos abaixo.\n\n## Instalação\n\n```bash\nnpm install @aria-iam/core @aria-iam/vue\n```\n\n> Requer Vue 3 e TypeScript ≥ 5.0.\n\n## Início rápido\n\n```typescript\n// main.ts\nimport { createApp } from \"vue\";\nimport { AriaIamPlugin, vCan } from \"@aria-iam/vue\";\nimport App from \"./App.vue\";\n\nconst APP_ID = 2; // ID numérico do painel de administração ARIA\n\ncreateApp(App)\n  .use(AriaIamPlugin, {\n    apiUrl:         \"https://teu-backend-aria.com\",\n    loginUrl:       \"https://teu-painel-aria.com/login\",\n    appId:          String(APP_ID),         // appId como string\n    tokenNamespace: \"priv_2_minha-app\",     // opcional — chave de isolamento de cookies\n  })\n  .directive(\"can\", vCan)\n  .mount(\"#app\");\n```\n\n```vue\n<!-- App.vue -->\n<script setup lang=\"ts\">\nimport { onMounted } from \"vue\";\nimport { ProtectedRoute, usePermissions } from \"@aria-iam/vue\";\nimport { createAriaAxios } from \"@aria-iam/core\";\n\nconst APP_ID = 2; // mesmo valor usado em main.ts\nconst NS = \"priv_2_minha-app\";\n\nconst api = createAriaAxios({\n  apiUrl:    \"https://teu-backend-aria.com\",\n  loginUrl:  \"https://teu-painel-aria.com/login\",\n  namespace: NS,\n});\n\nconst { load } = usePermissions();\n\nonMounted(() =>\n  load(APP_ID, (pkConta, appId) =>\n    api\n      .get(\"/conta-funcionalidade/buscar-pksfuncionalidade-conta\", {\n        params: { pkConta, pkAplicacao: appId },\n      })\n      .then(r => r.data.data as number[])\n  )\n);\n</script>\n\n<template>\n  <ProtectedRoute>\n    <RouterView />\n  </ProtectedRoute>\n</template>\n```\n\n## API\n\n### `AriaIamPlugin`\n\nPlugin Vue — chama `app.use(AriaIamPlugin, config)` uma vez em `main.ts`.\n\n```typescript\napp.use(AriaIamPlugin, {\n  apiUrl:         \"https://teu-backend-aria.com\",        // obrigatório\n  loginUrl:       \"https://teu-painel-aria.com/login\",   // obrigatório\n  appId:          \"2\",                                   // opcional\n  tokenNamespace: \"priv_2_minha-app\",                    // opcional\n})\n```\n\n### `useAuth()`\n\nComposable para estado de sessão reactivo.\n\n```typescript\nimport { useAuth } from \"@aria-iam/vue\";\n\nconst { status, user, logout } = useAuth();\n// status: Ref<\"checking\" | \"authorized\" | \"unauthorized\" | \"unauthenticated\">\n```\n\n### `usePermissions()`\n\nComposable para carregar e verificar permissões do utilizador. Chama `load()` dentro de `onMounted`.\n\n```typescript\nimport { onMounted } from \"vue\";\nimport { usePermissions } from \"@aria-iam/vue\";\nimport { createAriaAxios } from \"@aria-iam/core\";\n\nconst APP_ID = 2; // ID numérico do painel de administração ARIA\nconst api = createAriaAxios({\n  apiUrl:    \"https://teu-backend-aria.com\",\n  loginUrl:  \"https://teu-painel-aria.com/login\",\n  namespace: \"priv_2_minha-app\",\n});\n\nconst { allowed, loading, can, load } = usePermissions();\n\nonMounted(() =>\n  load(APP_ID, (pkConta, appId) =>\n    api\n      .get(\"/conta-funcionalidade/buscar-pksfuncionalidade-conta\", {\n        params: { pkConta, pkAplicacao: appId },\n      })\n      .then(r => r.data.data as number[])\n  )\n);\n\ncan(14); // boolean — pkFuncionalidade 14 está permitida para este utilizador?\n```\n\n### `useCan(pkFuncionalidade)`\n\nComposable de atalho para verificar uma permissão específica. Devolve `ComputedRef<boolean>` reactivo.\n\n```typescript\nimport { useCan } from \"@aria-iam/vue\";\n\nconst podeEditar = useCan(14); // 14 = pkFuncionalidade do painel ARIA\n```\n\n```html\n<button v-if=\"podeEditar\">Editar</button>\n```\n\n### `<ProtectedRoute>`\n\nComponente que redireciona para o login se a sessão não for válida.\n\n```html\n<ProtectedRoute>\n  <RouterView />\n</ProtectedRoute>\n```\n\n### Directiva `v-can`\n\nVerificação de permissão ao nível do elemento — esconde o elemento se o utilizador não tiver a permissão.\n\n```typescript\n// main.ts\nimport { vCan } from \"@aria-iam/vue\";\napp.directive(\"can\", vCan);\n```\n\n```html\n<button v-can=\"14\">Editar</button>\n```\n\n## Namespace de sessão (SSO / isolamento)\n\n```typescript\n// Isolado — cada app privada tem os seus próprios tokens\napp.use(AriaIamPlugin, { ..., tokenNamespace: \"priv_2_tickets\" })\napp.use(AriaIamPlugin, { ..., tokenNamespace: \"priv_5_technova\" })\n\n// Partilhado — estas duas apps partilham a mesma sessão SSO\napp.use(AriaIamPlugin, { ..., tokenNamespace: \"part_unitel\" })\n```\n\n## Licença\n\nMIT © [Sara David Tuma](https://github.com/SaraTuma)\n","readmeFilename":"README.pt.md"}