{"_id":"@apostrophecms/login-totp","_rev":"23-4bffcedba995aed0c326b169556365ca","name":"@apostrophecms/login-totp","dist-tags":{"beta":"1.0.0-beta","latest":"1.3.3"},"versions":{"1.0.0-beta":{"name":"@apostrophecms/login-totp","version":"1.0.0-beta","keywords":["apostrophe","login","totp"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/login-totp@1.0.0-beta","maintainers":[{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/login-totp#readme","bugs":{"url":"https://github.com/apostrophecms/login-totp/issues"},"dist":{"shasum":"49cfff5cacfc55b72c1c10074d279aaf5f32abad","tarball":"https://registry.npmjs.org/@apostrophecms/login-totp/-/login-totp-1.0.0-beta.tgz","fileCount":12,"integrity":"sha512-2Uy8rx/F+Riw4ppuvYX7/SmgfUlggEGU1YNAj4sM0+IjpNewqv/clrh6+dcadfovDexpwWTLk8ZD0OBodzvETA==","signatures":[{"sig":"MEQCIGK3oNnMqb84z45bnW7Ue23+hRpq8Jg9eJY7ReYRLtXRAiAvpBuIKWmzNHrGmYmJ+U61yusAaxQSDKuQAYr2nipf0Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/UthCRA9TVsSAnZWagAAPJMQAIxhVFwu54XYlenKTo4k\nqYiY2/g41eLvovhiU+BmIrg+ektrUI6Apu3WOedNNxaPChfxf4ImW0Y4jDAF\nB2me0jP7PLncB2PoNT2JL/CKKxoNGf1RlZJquCtm5Of3btTQg+bkhwMh6WaW\nfZHCcSaKitzOvjdKZcpIDIY59+sYPlHirik5HZAvw3sXmw3KeTIzWWnkOFCL\nOs6nWxKqT6H3J5MAGV05jjuohYhqzgERMScLClBQS4dW5QMvDNmeLDg8glq5\nkAaKnme7VnutEq8LkrpUadaHFOCHn+Y/RD5Yklx1+C3s13IWOv2HbXvXrfrF\nQJW82vnQb2m6+dB1gsgH+hYEEVYZ+/65WTIarPMFA2dXvOFONNBkgqLugcUm\n3Jc3/qfSD1BE6iMMpa3B9VkuEiR3aKnJxCsf8WWizu59mxk4wfY2t2eoKAWs\n78UHN7iMz3L4hYs9JEHzSrT3POJwn8kvMo/AdNXnXslN16M+fKOHuePbGjXk\n8Qiu31OVUPhBmpCEN89XYYwEhHRFG1/YSQX91GIV5UfTFzpBTYUquS2Avyme\nWOAw9mJ2OL+OkbV75HM63ZfptTk7ZvO8QMWTalaDrum2yEIuZ8Mm4F0JbxYz\nent+NbQmiNZ+2i3/W+K3ENSCmo9jT7jg1nh6JWCgvj0vUNVJ4NyO6oH+muLK\nyyIL\r\n=sYC+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"367d0fc6429155657472384d27537e8bf883d26b","scripts":{"lint":"npm run eslint","test":"npm run lint","eslint":"eslint ."},"_npmUser":{"name":"alexbea","email":"abea@mailbox.org"},"repository":{"url":"git+https://github.com/apostrophecms/login-totp.git","type":"git"},"_npmVersion":"6.14.13","description":"Adds totp (time-based one-time password) to Apostrophe login pages","directories":{},"_nodeVersion":"14.17.3","dependencies":{"qrcode":"^1.5.0","thirty-two":"^1.0.2","totp-generator":"0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.9.0","apostrophe":"github:apostrophecms/apostrophe","eslint-plugin-vue":"^8.3.0","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1","eslint-config-apostrophe":"^3.4.0"},"peerDependencies":{"apostrophe":"^3.13.0"},"_npmOperationalInternal":{"tmp":"tmp/login-totp_1.0.0-beta_1643989857270_0.52195626367573","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@apostrophecms/login-totp","version":"1.0.0","keywords":["apostrophe","login","totp"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/login-totp@1.0.0","maintainers":[{"name":"falkodev","email":"anthony@apostrophecms.com"},{"name":"triskuit","email":"tristan.krug@protonmail.com"},{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/login-totp#readme","bugs":{"url":"https://github.com/apostrophecms/login-totp/issues"},"dist":{"shasum":"b2ff43fa5efa30eeae4b8be12222527bb43b7b54","tarball":"https://registry.npmjs.org/@apostrophecms/login-totp/-/login-totp-1.0.0.tgz","fileCount":12,"integrity":"sha512-CNKwc//LrnZrMRl93aLO+G+U2uuxZC15thJqVEWUR5pRsZkSlS0RyoxdY+zz7qFQj10tgmtRe0ENZws84q2zAg==","signatures":[{"sig":"MEUCIQDssdfyWyZgFDfqznZXb/kNlnbqYskw1hcwqgjdNb53DQIgaRxrwKRleDU64RLwp5YNgPoTG6ZWqWswoEn8rLvj01w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22543,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjyC1cACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpzqg//dT4L9mNX0NtUJNKj68vw5lj4vNDA+2tsY9pFBKSwpmNvojNj\r\nbZu/elVHKJJofALPJ+0O2ya6DG/nbH6Z5ueTFCikqBrFzjW8CYEqXKJzi/03\r\n9AoCp4JEWFOOR0x4hN4NydC/2I5TBEEfuqDPq0PvzJ1UyYsXr48++P9+aup+\r\n/Yo5ENbMwxpv8oaXEu5rfbpRycmR4WLkaRADXIkFgCqU/BC6itGMipf2a88w\r\nQcgjIh+psy1sxveQ+D9eF7bkdJN7KZQDY/IqTE9Ut/OwfRrZNSG6GRv8grSF\r\nJXshetfYVmzUt6sYuqdvWunha1AMJ1IDghrOg53zWVQtH9I6ehuHtf8qAM5+\r\nQoRfRRgf2Yh5HzbPAotw8RaNHmXb42s/MhQLEQAwGyX6BFdLenfSQW7gH7qV\r\neV9fiFU0qEWwpiZztvXu5fqYMRWe0FNGoDUANZB8/cLNj9yQ+VqSe6iJ2IVw\r\nskmCrKIW6KWP6Yx/NCtakvdEZcPmtwThTmGCPvT+4XNjxZY6gOhwTWnM1cT+\r\nQama9SEm/pZVlLvoP9oun1ri5GoioJm1hQUD+9vrqehUBWP6lK2+InQS6fmX\r\nJza2067hN4RP7E77cqMja6HP5xfgcoKmclsHqQPDgf8ZvAi3dbWHs2Jj4ISX\r\nHwqBlvlm/+xk+kAxA9t2Jgp84PbFZdUuncc=\r\n=BVBC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"4d89fb0735a927fff62a3bb6a5ad500ed77e8dcd","scripts":{"lint":"npm run eslint","test":"npm run lint","eslint":"eslint ."},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/login-totp.git","type":"git"},"_npmVersion":"8.19.2","description":"Adds totp (time-based one-time password) to Apostrophe login pages","directories":{},"_nodeVersion":"16.15.0","dependencies":{"qrcode":"^1.5.0","thirty-two":"^1.0.2","totp-generator":"0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.9.0","apostrophe":"github:apostrophecms/apostrophe","eslint-plugin-vue":"^8.3.0","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1","eslint-config-apostrophe":"^3.4.0"},"peerDependencies":{"apostrophe":"^3.13.0"},"_npmOperationalInternal":{"tmp":"tmp/login-totp_1.0.0_1674063196017_0.733965535236845","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@apostrophecms/login-totp","version":"1.0.1","keywords":["apostrophe","login","totp"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/login-totp@1.0.1","maintainers":[{"name":"falkodev","email":"anthony@apostrophecms.com"},{"name":"triskuit","email":"tristan.krug@protonmail.com"},{"name":"mhiggins","email":"mhiggins.louis@gmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/login-totp#readme","bugs":{"url":"https://github.com/apostrophecms/login-totp/issues"},"dist":{"shasum":"6c7c796d48255895488dbba7cc66f0637f7840d0","tarball":"https://registry.npmjs.org/@apostrophecms/login-totp/-/login-totp-1.0.1.tgz","fileCount":12,"integrity":"sha512-DXeDQwqDCFCz6FVnkpcqODufvrPG6RIjsHKTx6WouaH76zWaxsJas82DtRLiVltsN8+VsrlRLGTMEr5y3MqHQA==","signatures":[{"sig":"MEUCIASCQAGGHlrwnc9klDH2h/OrodM4lvv/wWqMByNCoxucAiEA75efXGIpn5O7JMX29jBOF7QYOCDJV05ZvkPz9U/pUio=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22554,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7+KDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmptYg/+Njnsy51F2R62gVIothDdbQpaT222VJHwLag4oJZjsezlWRIw\r\nE5mNSkuEoy1qk03ZRgxAS5OaweXJk20OnVoS6XVPiwfil0viAreIwXTLZk4h\r\n1sdWS8Qe48txDnRRhco5nk9ljBFfHw5YopuT0BaFZ/rupseLxgoquG/sGogw\r\nhbLH2ddVCXfCpozJ2KkBSks7nExzVTla384XY5+riengNkNaqMwxDqwdyrA0\r\nqnmarjLkPwdervJAnA6+cV6FAQGqPSrzXfAUhlOiyshYQy8HwMxPbZN24907\r\nUzmYCGgJwhB6mpDoy4LJVxHTG7gcuCPG5hnKyEvSkEYLZ8c9u7/UmsMRzkjL\r\nwQX59gl3ah5DXZDjCjye2+/MadOHNx8OkBLYZykzRU4d7qSWgj6LC9zYjtbY\r\nkaT0zrargwYH4tRwZqUyjD2LR8hLbYqaHKJ7G1Gjehi+FJchw2AjEDiDMNkb\r\nrFvbbw9BzV/3EvrNecb7Z941IrRnZqdFZZYQtlDpyVoRDg4lW96SuPpbXDHz\r\n1A9Ipw0WXytahrXc3IEj5Ndme0e7IQCEwSXdrSlfH0uQdayK5GRAMowcadRJ\r\nmLD6tPmERzX4N6Qxsm0KbPj7HKd5wHbTRvRdpCruSRiYnEwwTNq8YUjWOuwf\r\n19+YnGhLvS2RrFtkagTDLLLrkV/K1ZASyzw=\r\n=3Bqu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"408f1ace6f0b05dc25dcfb9b01d60501f5bd99c2","scripts":{"lint":"npm run eslint","test":"npm run lint","eslint":"eslint ."},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/login-totp.git","type":"git"},"_npmVersion":"6.14.15","description":"Adds totp (time-based one-time password) to Apostrophe login pages","directories":{},"_nodeVersion":"12.22.6","dependencies":{"qrcode":"^1.5.0","thirty-two":"^1.0.2","totp-generator":"0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.9.0","apostrophe":"github:apostrophecms/apostrophe","eslint-plugin-vue":"^8.3.0","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1","eslint-config-apostrophe":"^3.4.0"},"_npmOperationalInternal":{"tmp":"tmp/login-totp_1.0.1_1676665475191_0.2907583353061376","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@apostrophecms/login-totp","version":"1.1.0","keywords":["apostrophe","login","totp"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/login-totp@1.1.0","maintainers":[{"name":"triskuit","email":"tristan.krug@protonmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/login-totp#readme","bugs":{"url":"https://github.com/apostrophecms/login-totp/issues"},"dist":{"shasum":"5239df61b14e6372ad49e904d44884109282d019","tarball":"https://registry.npmjs.org/@apostrophecms/login-totp/-/login-totp-1.1.0.tgz","fileCount":15,"integrity":"sha512-BOyUbJEopO8dQLpmp07peLHHeyNTV5WYhfI4Nl24elkjtHFJxgc4p55yBLLjo0c9L6nXLT0DVB0D+jadwn+lgw==","signatures":[{"sig":"MEQCID7djs793Pd8o/0jEGDX8AdcNGmsGOIBsYImOS3b8rYyAiA0VTRrFJ4XcBWd+1TFbjKmVGubsAAAQtGsjs8yRn9u+g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26647},"main":"index.js","gitHead":"2c6446b87f0a9e504e68d91bae9f48f36615ccf2","scripts":{"lint":"npm run eslint","test":"npm run lint && mocha","eslint":"eslint ."},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/login-totp.git","type":"git"},"_npmVersion":"9.5.0","description":"Adds totp (time-based one-time password) to Apostrophe login pages","directories":{},"_nodeVersion":"18.15.0","dependencies":{"qrcode":"^1.5.0","thirty-two":"^1.0.2","totp-generator":"0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^7.2.0","eslint":"^7.9.0","apostrophe":"github:apostrophecms/apostrophe","eslint-plugin-vue":"^8.3.0","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1","eslint-config-apostrophe":"^3.4.0"},"_npmOperationalInternal":{"tmp":"tmp/login-totp_1.1.0_1692209994388_0.09221935767101419","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@apostrophecms/login-totp","version":"1.2.0","keywords":["apostrophe","login","totp"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/login-totp@1.2.0","maintainers":[{"name":"haroun","email":"haroun.npm@icloud.com"},{"name":"itsrogil","email":"romain.gilles1@gmail.com"},{"name":"triskuit","email":"tristan.krug@protonmail.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"alexbea","email":"abea@mailbox.org"},{"name":"gregvanbrug","email":"greg.vanbrug@gmail.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/login-totp#readme","bugs":{"url":"https://github.com/apostrophecms/login-totp/issues"},"dist":{"shasum":"655d9c17cdc6b46690b4096f79b35aa6d0770be8","tarball":"https://registry.npmjs.org/@apostrophecms/login-totp/-/login-totp-1.2.0.tgz","fileCount":15,"integrity":"sha512-PMnVB+RULIqO/Jgw0Yj71TZkAU4UgVYVvBZV0aS6Kikl0WnPEANNlMeMpkV3rFQRlarJWPHd+hTOz55EZC8enw==","signatures":[{"sig":"MEQCIFD72n/rezn7RHBvA4Ff5WROgCZorAR/b87FPlKuuYLjAiAYVRusdbNLxMHbUAEJxA7JFOW+Usq05m9FhUsMCXYCYA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26755},"main":"index.js","gitHead":"b9f0a01198faa801d08adea7efa5c29a37aedff2","scripts":{"lint":"npm run eslint","test":"npm run lint && mocha","eslint":"eslint ."},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/login-totp.git","type":"git"},"_npmVersion":"9.5.0","description":"Adds totp (time-based one-time password) to Apostrophe login pages","directories":{},"_nodeVersion":"18.15.0","dependencies":{"qrcode":"^1.5.0","thirty-two":"^1.0.2","totp-generator":"0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^7.2.0","eslint":"^7.9.0","apostrophe":"github:apostrophecms/apostrophe","eslint-plugin-vue":"^8.3.0","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1","eslint-config-apostrophe":"^3.4.0"},"_npmOperationalInternal":{"tmp":"tmp/login-totp_1.2.0_1710249104516_0.984486119469046","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@apostrophecms/login-totp","version":"1.3.0","keywords":["apostrophe","login","totp"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/login-totp@1.3.0","maintainers":[{"name":"haroun","email":"haroun.npm@icloud.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/login-totp#readme","bugs":{"url":"https://github.com/apostrophecms/login-totp/issues"},"dist":{"shasum":"e0a436522239fa56989a7df92034569a16b72f9d","tarball":"https://registry.npmjs.org/@apostrophecms/login-totp/-/login-totp-1.3.0.tgz","fileCount":15,"integrity":"sha512-UlsWfAwQnTxp0p1TH4de8DbJPaHNR0FfA5O9MZYAbTd0PCZnX5wLhIjLQwMku46QVOcgP9C86kuj5GSnC+iCCw==","signatures":[{"sig":"MEUCICMwS3jIQw5rsNJnGgh9nb6ohCg58Z1QH1VTC/u/XsDLAiEAxeRNJLkKAm32S3IL37EHKOi4yC5m5CCTpINZBDDivQU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26951},"main":"index.js","gitHead":"8cc2c7d244be2f9e50547cca1bf423edf6f9a01d","scripts":{"lint":"npm run eslint","test":"npm run lint && mocha","eslint":"eslint ."},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/login-totp.git","type":"git"},"_npmVersion":"10.5.0","description":"Adds totp (time-based one-time password) to Apostrophe login pages","directories":{},"_nodeVersion":"18.20.0","dependencies":{"qrcode":"^1.5.0","thirty-two":"^1.0.2","totp-generator":"0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^7.2.0","eslint":"^7.9.0","apostrophe":"github:apostrophecms/apostrophe","eslint-plugin-vue":"^8.3.0","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1","eslint-config-apostrophe":"^3.4.0"},"_npmOperationalInternal":{"tmp":"tmp/login-totp_1.3.0_1720637249549_0.34536405161399686","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"@apostrophecms/login-totp","version":"1.3.1","keywords":["apostrophe","login","totp"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/login-totp@1.3.1","maintainers":[{"name":"haroun","email":"haroun.npm@icloud.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"etlaurent","email":"etldev@tuta.io"},{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"}],"homepage":"https://github.com/apostrophecms/login-totp#readme","bugs":{"url":"https://github.com/apostrophecms/login-totp/issues"},"dist":{"shasum":"e0e3f4b8fa4fdb3f430bde78e1b201e9b3d107a5","tarball":"https://registry.npmjs.org/@apostrophecms/login-totp/-/login-totp-1.3.1.tgz","fileCount":21,"integrity":"sha512-t9bJYAwkdowhOmuzjaAx7aCu/uWn+16eIUC5+hqsnU68nsmVSQ8lE0/iFOA4E71UJD4odVbhEkN2Eln5lXYmJA==","signatures":[{"sig":"MEUCICxn/UvBkduPObrhL8IOhiUZAfcHI2RCixVcxjjSY+cUAiEA8/1Ea5FUB/I0GJoa9cWpvvfukVUZhEA+okvM2v+cYNg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34532},"main":"index.js","gitHead":"783cb180a1868c521c9b6dabff14327fa445b297","scripts":{"lint":"npm run eslint","test":"npm run lint && mocha","eslint":"eslint ."},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/login-totp.git","type":"git"},"_npmVersion":"10.7.0","description":"Adds totp (time-based one-time password) to Apostrophe login pages","directories":{},"_nodeVersion":"18.20.4","dependencies":{"qrcode":"^1.5.0","thirty-two":"^1.0.2","totp-generator":"0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^7.2.0","eslint":"^7.9.0","apostrophe":"github:apostrophecms/apostrophe","eslint-plugin-vue":"^8.3.0","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1","eslint-config-apostrophe":"^3.4.0"},"_npmOperationalInternal":{"tmp":"tmp/login-totp_1.3.1_1730381868649_0.7183317862012721","host":"s3://npm-registry-packages"}},"1.3.2":{"name":"@apostrophecms/login-totp","version":"1.3.2","keywords":["apostrophe","login","totp"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/login-totp@1.3.2","maintainers":[{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"stuartromanek","email":"stuart@punkave.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"etlaurent","email":"npm_etlaurent.cartoon369@passmail.net"},{"name":"valjed","email":"vjeudy@protonmail.com"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"},{"name":"bodonkey","email":"robert@robertmeans.net"},{"name":"haroun","email":"haroun.npm@icloud.com"}],"homepage":"https://github.com/apostrophecms/login-totp#readme","bugs":{"url":"https://github.com/apostrophecms/login-totp/issues"},"dist":{"shasum":"68abc603eced26eadaf97487b32a126a4c0598a1","tarball":"https://registry.npmjs.org/@apostrophecms/login-totp/-/login-totp-1.3.2.tgz","fileCount":22,"integrity":"sha512-xrVb3S/NamtpyFuywUXnIcUwTNDkTGcsonQtQtJh1hZFkZap50bB2A4Gcl9++lOyDMgwuW6TNFH5Ywr/yT0rUA==","signatures":[{"sig":"MEQCIGWZYL+TbFvrno9+Y7wTAyM052LOuI4xyuQ4mmmB4EPoAiApxpiX+LvAF7r6SE4bzxtX6+wtx6i0MRShW9XLSwovKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35113},"main":"index.js","gitHead":"a76e52a4f3a4b5e8ac1ee725e97254a680089243","scripts":{"lint":"npm run eslint && npm run stylelint","test":"npm run lint && mocha","eslint":"eslint --ext .js,.vue .","stylelint":"stylelint ui/**/*.{scss,vue}"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"repository":{"url":"git+https://github.com/apostrophecms/login-totp.git","type":"git"},"_npmVersion":"10.9.2","description":"Adds totp (time-based one-time password) to Apostrophe login pages","directories":{},"_nodeVersion":"18.20.4","dependencies":{"qrcode":"^1.5.0","thirty-two":"^1.0.2","totp-generator":"0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^7.2.0","eslint":"^7.9.0","stylelint":"^16.0.0","apostrophe":"github:apostrophecms/apostrophe","eslint-plugin-vue":"^8.3.0","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1","eslint-config-apostrophe":"^3.4.0","stylelint-config-apostrophe":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/login-totp_1.3.2_1742400267768_0.5322902008098143","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@apostrophecms/login-totp","version":"1.3.3","keywords":["apostrophe","login","totp"],"author":{"name":"Apostrophe Technologies"},"license":"MIT","_id":"@apostrophecms/login-totp@1.3.3","maintainers":[{"name":"alexgilbert","email":"alex@apostrophecms.com"},{"name":"boutell","email":"tom@apostrophecms.com"},{"name":"etlaurent","email":"npm_etlaurent.cartoon369@passmail.net"},{"name":"romanek","email":"stuart+npm@apostrophecms.com"},{"name":"bodonkey","email":"robert.means1969+apostrophecms@gmail.com"},{"name":"haroun","email":"haroun.npm@icloud.com"},{"name":"valjed","email":"vjeudy@protonmail.com"}],"homepage":"https://github.com/apostrophecms/apostrophe/tree/main/packages/login-totp#readme","bugs":{"url":"https://github.com/apostrophecms/login-totp/issues"},"dist":{"shasum":"057657c0555190703d83a512e3a5885852e690db","tarball":"https://registry.npmjs.org/@apostrophecms/login-totp/-/login-totp-1.3.3.tgz","fileCount":21,"integrity":"sha512-xzFnLLMstb/d2AFbavBsxLVr3LRtoEU8sg9ynjP42xlVhVo5LZtpO1OypoNnrODHTJd7IrwiY59QJ7FgTML65w==","signatures":[{"sig":"MEUCIGcI73U/N2/wung0BDOfk+O2jzXSek7nXdkQhSNBFWIRAiEAuaqztm7IMu4ieMlQsU3dBdqCHco/qnezDhOn8gCnwLg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33915},"main":"index.js","_from":"file:apostrophecms-login-totp-1.3.3.tgz","scripts":{"lint":"npm run eslint && npm run stylelint","test":"npm run lint && mocha","eslint":"eslint --ext .js,.vue .","stylelint":"stylelint ui/**/*.{scss,vue}"},"_npmUser":{"name":"boutell","email":"tom@apostrophecms.com"},"_resolved":"/private/var/folders/lg/7k83x5ys71d90nvc40mj1tbr0000gn/T/c59b08420ed7643e8120f82631e72b89/apostrophecms-login-totp-1.3.3.tgz","_integrity":"sha512-xzFnLLMstb/d2AFbavBsxLVr3LRtoEU8sg9ynjP42xlVhVo5LZtpO1OypoNnrODHTJd7IrwiY59QJ7FgTML65w==","repository":{"url":"git+https://github.com/apostrophecms/apostrophe.git","type":"git","directory":"packages/login-totp"},"_npmVersion":"10.9.2","description":"Adds totp (time-based one-time password) to Apostrophe login pages","directories":{},"_nodeVersion":"20.19.3","dependencies":{"qrcode":"^1.5.0","thirty-two":"^1.0.2","totp-generator":"0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^7.2.0","eslint":"^9.39.1","stylelint":"^16.0.0","apostrophe":"^4.25.0","eslint-config-apostrophe":"^6.0.2","stylelint-config-apostrophe":"^4.4.0"},"_npmOperationalInternal":{"tmp":"tmp/login-totp_1.3.3_1766096404588_0.38385247675667267","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2022-02-04T15:50:57.137Z","modified":"2026-01-26T19:09:56.692Z","1.0.0-beta":"2022-02-04T15:50:57.400Z","1.0.0":"2023-01-18T17:33:16.184Z","1.0.1":"2023-02-17T20:24:35.417Z","1.1.0":"2023-08-16T18:19:54.601Z","1.2.0":"2024-03-12T13:11:44.688Z","1.3.0":"2024-07-10T18:47:29.767Z","1.3.1":"2024-10-31T13:37:49.035Z","1.3.2":"2025-03-19T16:04:27.946Z","1.3.3":"2025-12-18T22:20:04.741Z"},"bugs":{"url":"https://github.com/apostrophecms/login-totp/issues"},"author":{"name":"Apostrophe Technologies"},"license":"MIT","homepage":"https://github.com/apostrophecms/apostrophe/tree/main/packages/login-totp#readme","keywords":["apostrophe","login","totp"],"repository":{"url":"git+https://github.com/apostrophecms/apostrophe.git","type":"git","directory":"packages/login-totp"},"description":"Adds totp (time-based one-time password) to Apostrophe login pages","maintainers":[{"email":"alex@apostrophecms.com","name":"alexgilbert"},{"email":"tom@apostrophecms.com","name":"boutell"},{"email":"stuart+npm@apostrophecms.com","name":"romanek"},{"email":"robert.means1969+apostrophecms@gmail.com","name":"bodonkey"}],"readme":"<div align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/apostrophecms/apostrophe/main/logo.svg\" alt=\"ApostropheCMS logo\" width=\"80\" height=\"80\">\n\n  <h1>Apostrophe TOTP Login Verification</h1>\n  <p>\n    <a aria-label=\"Apostrophe logo\" href=\"https://v3.docs.apostrophecms.org\">\n      <img src=\"https://img.shields.io/badge/MADE%20FOR%20ApostropheCMS-000000.svg?style=for-the-badge&logo=Apostrophe&labelColor=6516dd\">\n    </a>\n    <a aria-label=\"Test status\" href=\"https://github.com/apostrophecms/login-totp/actions\">\n      <img alt=\"GitHub Workflow Status (branch)\" src=\"https://img.shields.io/github/workflow/status/apostrophecms/login-totp/Tests/main?label=Tests&labelColor=000000&style=for-the-badge\">\n    </a>\n    <a aria-label=\"Join the community on Discord\" href=\"http://chat.apostrophecms.org\">\n      <img alt=\"\" src=\"https://img.shields.io/discord/517772094482677790?color=5865f2&label=Join%20the%20Discord&logo=discord&logoColor=fff&labelColor=000&style=for-the-badge&logoWidth=20\">\n    </a>\n    <a aria-label=\"License\" href=\"https://github.com/apostrophecms/login-totp/blob/main/LICENSE.md\">\n      <img alt=\"\" src=\"https://img.shields.io/static/v1?style=for-the-badge&labelColor=000000&label=License&message=MIT&color=3DA639\">\n    </a>\n  </p>\n</div>\n\nThis login verification module adds a [TOTP (Time-based One-Time Password)](https://en.wikipedia.org/wiki/Time-based_one-time_password) check when any user logs into the site, compatible with Google Authenticator or any TOTP app.\nWhen activated, it will ask unregistered users to add a token to their app through a QR code. Once done, it will ask users to enter the code provided by their app after the initial login step.\n\n## Installation\n\nTo install the module, use the command line to run this command in an Apostrophe project's root directory:\n\n```\nnpm install @apostrophecms/login-totp\n```\n\n## Usage\n\nInstantiate the TOTP login module in the `app.js` file:\n\n```javascript\nrequire('apostrophe')({\n  shortName: 'my-project',\n  modules: {\n    '@apostrophecms/login-totp': {}\n  }\n});\n```\n\nYou must configure the `@apostrophecms/login` module with a TOTP secret, as shown. The secret must be **exactly 10 characters long.**\n\n```javascript\n// modules/@apostrophecms/login/index.js\nmodule.exports = {\n  options: {\n    totp: {\n      // Should be a random string, exactly 10 characters long\n      secret: 'totpsecret'\n    }\n  }\n};\n```\n\n> ⚠️ All configuration of TOTP related options is done on the `@apostrophecms/login` module. The `@apostrophecms/login-totp` module is just an \"improvement\" to that module, so it has no configuration options of its own.\n\n### Resetting TOTP when a user loses their device\n\nIf a user loses their device, an admin can edit the appropriate user via the admin bar. Select \"Yes\" for the \"Reset TOTP\" field and save the user.\n\nIf an admin user loses their own device, they can reset TOTP via a command line task. Pass the username as the sole argument:\n\n```\nnode app @apostrophecms/user:reset-totp username-goes-here\n```\n\nOnce TOTP is reset, the user is able to set it up again on their next login.\n","readmeFilename":"README.md"}