{"_id":"@cenkce/nest-keycloak-connect","_rev":"5-09e8f7ab388bd2191031ed6dd2cf1b64","name":"@cenkce/nest-keycloak-connect","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@cenkce/nest-keycloak-connect","version":"1.0.0","description":"keycloak-nodejs-connect module for Nest","author":{"name":"John Joshua Ferrer","email":"johnjoshuaferrer@disroot.org"},"license":"MIT","scripts":{"start:dev":"tsc -w","prebuild":"rimraf dist","build":"tsc","postbuild":"cpr README.md dist/ && cpr LICENSE dist/ && cpr package.json dist/","npm:publish":"npm run build && cd dist && npm publish","format":"prettier --write \"src/**/*.ts\"","lint":"tslint -p tsconfig.json -c tslint.json"},"keywords":["nestjs","keycloak","typescript"],"repository":{"type":"git","url":"git+https://github.com/ferrerojosh/nest-keycloak-connect.git"},"bugs":{"url":"https://github.com/ferrerojosh/nest-keycloak-connect/issues"},"peerDependencies":{"@nestjs/common":"^6.0.0","reflect-metadata":"^0.1.12","rxjs":"^6.0.0"},"dependencies":{"keycloak-connect":"^9.0.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@types/express":"4.16.1","cpr":"^3.0.1","prettier":"^1.19.1","reflect-metadata":"^0.1.12","rimraf":"^3.0.2","rxjs":"^6.0.0","ts-node":"^8.6.2","typescript":"^3.8.3"},"gitHead":"ac7404d0ae1358848b53847c37328f1f5dc99b92","homepage":"https://github.com/ferrerojosh/nest-keycloak-connect#readme","_id":"@cenkce/nest-keycloak-connect@1.0.0","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-FlEdkmx2baB1VjlBzkGmaTvunlok8o60lOEDjj4GDTyw9OiMkUgNNUtMKMfNk99nGZQC9lB4wQHaTvxnc1JMJA==","shasum":"e2cd48e3692864c2919a419151dac7c3ae617ccb","tarball":"https://registry.npmjs.org/@cenkce/nest-keycloak-connect/-/nest-keycloak-connect-1.0.0.tgz","fileCount":16,"unpackedSize":17912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejKK9CRA9TVsSAnZWagAAUgwP/2duJceXPrkgW3vICObN\nVE0tWEIy+48Pl1ja+OCxJ5RYIXOL0I4W3HKXDrFRrS8IArznD3ctdzCl4Hb3\nNmvB5vpzygv+6Lt2H7IMJDQQpOzjNtfutWPJJZ3M6GMXQ6bk92XoDH7Y+/1R\nU8GxAhuZbAW6UIqruVXfJVz5lZs5573ELXgaUtGS/ohcaQStIfXDTXxZh6EL\nLixyuE+QZtv1Vexd2kTWUZuwWI2tMh2oIKuETXmBRemdSX4/JHmH/3JdsuFx\nvOcbya8Q2TRHQeEfqf7I4U3Xwen8c+G3FyIlSZoj+c2N96Co1FTStowxue7i\nmsCEaJ2/S2dWxrtLb67gUZKVF/nuIj1ws+TPhUoeMwtO8Ef1xdFPzk+KxAmq\nC4XjjdXR4R6FkMCdXAsU6vohtbZQs9Gt4q0iZWMUffyrQ8a4Kjdwuw+eBx4p\nSfzZIDAy+XWvuab0gUz3fGJMEGmZyHT8Iydee343vupmb6KVfxGSgOCqRPjZ\nobSjobFrGnt0KD+NPEZ3rzp0SQiMOc46hIm5EQjcsZTt/J9OE8zyDkdp1e5F\nvb6EItlhkSzEWh9oZ5qqMHaRuVSgS6xaoeEeizDmdOCpTj173WZi5gPZGpQ7\n0g1reLqipEFa0XCWqpdF6xfw0ZVe5Q3A58gJOLcUU6mxhGIHBQ0JcfKupmYH\n2xbt\r\n=F3VS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPZui/SUiddhYwJ8uOgrBaymUqrH6QIzAYmovIyp9mJAIgN/BH0LF2hQw5Xis4d2W7LxDtpoGRhHg4gYxihAhtK1k="}]},"maintainers":[{"name":"cenkce","email":"mail@cenkcetinkaya.com"}],"_npmUser":{"name":"cenkce","email":"mail@cenkcetinkaya.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nest-keycloak-connect_1.0.0_1586275005176_0.9911433893153443"},"_hasShrinkwrap":false},"1.0.1":{"name":"@cenkce/nest-keycloak-connect","version":"1.0.1","description":"keycloak-nodejs-connect module for Nest","author":{"name":"John Joshua Ferrer","email":"johnjoshuaferrer@disroot.org"},"license":"MIT","scripts":{"start:dev":"tsc -w","prebuild":"rimraf dist","build":"tsc","postbuild":"cpr README.md dist/ && cpr LICENSE dist/ && cpr package.json dist/","npm:publish":"npm run build && cd dist && npm publish","format":"prettier --write \"src/**/*.ts\"","lint":"tslint -p tsconfig.json -c tslint.json"},"keywords":["nestjs","keycloak","typescript"],"repository":{"type":"git","url":"git+https://github.com/ferrerojosh/nest-keycloak-connect.git"},"bugs":{"url":"https://github.com/ferrerojosh/nest-keycloak-connect/issues"},"peerDependencies":{"@nestjs/common":"^6.0.0","reflect-metadata":"^0.1.12","rxjs":"^6.0.0"},"dependencies":{"keycloak-connect":"^9.0.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@types/express":"4.16.1","cpr":"^3.0.1","prettier":"^1.19.1","reflect-metadata":"^0.1.12","rimraf":"^3.0.2","rxjs":"^6.0.0","ts-node":"^8.6.2","typescript":"^3.8.3"},"homepage":"https://github.com/ferrerojosh/nest-keycloak-connect#readme","_id":"@cenkce/nest-keycloak-connect@1.0.1","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-AnQvKc3E9Ivqx/f+vBvn2cvVNIsC+u5GNIOiNTBRxdErWnNOEPoo6LBnLT3Ibz7imlb+w+1fmYhZUlnDewM2Tg==","shasum":"294624b6310e9d81e8403e3efa0869375ba1354c","tarball":"https://registry.npmjs.org/@cenkce/nest-keycloak-connect/-/nest-keycloak-connect-1.0.1.tgz","fileCount":23,"unpackedSize":21040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejKRZCRA9TVsSAnZWagAA8NoP/3FKF9by8KoL2AACiotI\n/ObzikzXMSTtdVzMwu2DYQy4cMCoaco2lCKyspRUiJn9NjBdrEup+D6/Ch/l\ntVM1EzZT+KsGkTH3OFv8WzMMMtokyJjD0mQMnsY8XM3HbwXL1TZIAo7jmGu7\nIiumWqvMT3K5VQLxIZIKc3qgzLvENKINswsPtmlzysWJRVDv0mZfb+ReMSNE\nq946ZqSM2MQYuEOft4kPf79sVAZVX4THqribD3gaMZ1Q78p9/SHKQPi3UADF\nC1M6tUSJZwIcLb/Yitnra3tziggJe7dkBncVUXlwUmMLzUkb5va4TnglSDlz\n511PBmL6EmFL9dxNuwKuMXJQmmAMofIoOxQQ7rHOPpY+ZAaaX+ffbmgd6C5d\nwaAKJG64BB2WEulz0og2jUlqcsByEs5lHReiaFC/1YrV1/Y8ef7aEiBIlOue\nomUxL5iP+T+RGPpMH3UJ8vN3ogTiEPqD+zyt7NpGY+XXozyCDaQMQOvgQkNb\n6J54/42ZG2FyEH77j7Lyu7Kk1dqPIR68A233tkowA//4kKuNOOGJ/Z3Y/Fjj\niupm7jNCS/+JM7FqSqnVJFVx63pqvL9f21yn3Bic/4QUzmJ39C2Sz495+WEe\nF6gq99+u4lz3xLV2ywv9VIjAR14n/zRbuCw0AkHBus7z0LX4tFsQ+cLsfE8z\nIDKw\r\n=nUse\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHLUWOlUcfBejSWRJx+6EU5I6jBqGH+0ZftH/owz8UidAiEA5NvmO2EMxqHb8yJHB2xbzg8E2O7j9oLf/3ME6HQNNUw="}]},"maintainers":[{"name":"cenkce","email":"mail@cenkcetinkaya.com"}],"_npmUser":{"name":"cenkce","email":"mail@cenkcetinkaya.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nest-keycloak-connect_1.0.1_1586275417263_0.8249054279671038"},"_hasShrinkwrap":false},"1.0.2":{"name":"@cenkce/nest-keycloak-connect","version":"1.0.2","description":"keycloak-nodejs-connect module for Nest","author":{"name":"John Joshua Ferrer","email":"johnjoshuaferrer@disroot.org"},"license":"MIT","scripts":{"start:dev":"tsc -w","prebuild":"rimraf dist","build":"tsc","postbuild":"cpr README.md dist/ && cpr LICENSE dist/ && cpr package.json dist/","npm:publish":"npm run build && cd dist && npm publish","format":"prettier --write \"src/**/*.ts\"","lint":"tslint -p tsconfig.json -c tslint.json"},"keywords":["nestjs","keycloak","typescript"],"repository":{"type":"git","url":"git+https://github.com/ferrerojosh/nest-keycloak-connect.git"},"bugs":{"url":"https://github.com/ferrerojosh/nest-keycloak-connect/issues"},"peerDependencies":{"@nestjs/common":"^6.0.0","reflect-metadata":"^0.1.12","rxjs":"^6.0.0"},"dependencies":{"keycloak-connect":"^9.0.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@types/express":"4.16.1","cpr":"^3.0.1","prettier":"^1.19.1","reflect-metadata":"^0.1.12","rimraf":"^3.0.2","rxjs":"^6.0.0","ts-node":"^8.6.2","typescript":"^3.8.3"},"homepage":"https://github.com/ferrerojosh/nest-keycloak-connect#readme","_id":"@cenkce/nest-keycloak-connect@1.0.2","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-5bhPIWbWCcnaB+p4gQKWCory3jfMx9jx3MXpPYNrDvHvYkp0OTk1bProTyxDp3UXf5T/esn21yceo8LTq0WhTQ==","shasum":"0c109a1657281ded847265336620b04eb159e153","tarball":"https://registry.npmjs.org/@cenkce/nest-keycloak-connect/-/nest-keycloak-connect-1.0.2.tgz","fileCount":23,"unpackedSize":21040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekcYjCRA9TVsSAnZWagAAf3QP/jJM6Blj8dyFPchEUyw7\neQW8DUy9RC58Wu69n3GJ1oSx9BHEEgxk8W0pBbh/ylg/bgjK/1bw9VUqZ7fK\n85SMoMjHDYQQEvpDqp+u4TPTKpwfa5kwipxQ8NyeyImQjKaKSVfAH32J7xHC\nFPWoBvbgdjd3g77lJiUgnOEe/GD4CbP/WdT/1WDqVunErB3MATyP6A3eBCpP\nLkBRtrNNpmLm4QzmL9DGNJkbNfmoXC1kuCz4dXetJySBM+2cR2ZoXudiHlOF\nM1eP9qL3Bhf2jAiZoMJkm8LOcZJ5/qmxeoRB+WdV7u3E0Zso3+79yD2oxxFr\nHRrr6I8lpbnV8VsGkIjV1bts6EGrcrESXxgOAV96vLdXRzqe+rB166FZl+/M\n0+g1GdkITxqRK4uVAY10FdcYnelTsaA7Z8omIETGVp5G7GKipDum+eRyNZij\n8kd7ph6EmjEoqRzz6YxO3batLE15eMhLbpFDsM1kC6KJVttm/klPcjW4739o\nueZ06E4snO+KAQhMWRBd9K9NnbJxqkSxsVUeb0pPPGXNvLm78TT5k8+NBllF\neZ4Dnca3PXH3hqnmSbdDLoxfocELWFJbRGDBFd0SazWPcA9Sjrjal8cAI8WE\nUFkt0KgqSfqpjnl8mhjoglKMTiUXCed0BCSDykWzKDBDNhy764uSS78w0qNR\nL+OZ\r\n=YbNi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHoiMHE7kbFOevtbvty6y0Yigi7hnb+szRbweAk3MdnNAiB++LHekqeRs9L6tQqeIPHnGIT4/nTLTg3959hre+2WDA=="}]},"maintainers":[{"name":"cenkce","email":"mail@cenkcetinkaya.com"}],"_npmUser":{"name":"cenkce","email":"mail@cenkcetinkaya.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nest-keycloak-connect_1.0.2_1586611747464_0.94510713351125"},"_hasShrinkwrap":false},"1.1.0":{"name":"@cenkce/nest-keycloak-connect","version":"1.1.0","description":"keycloak-nodejs-connect module for Nest","author":{"name":"John Joshua Ferrer","email":"johnjoshuaferrer@disroot.org"},"contributors":[{"name":"Cenk Cetinkaya","email":"mail@cenkcetinkaya.com"}],"license":"MIT","scripts":{"start:dev":"tsc -w","prebuild":"rimraf dist","build":"tsc || true","postbuild":"cpr README.md dist/ && cpr LICENSE dist/ && cpr package.json dist/","npm:publish":"npm run build && cd dist && npm publish","format":"prettier --write \"src/**/*.ts\"","lint":"tslint -p tsconfig.json -c tslint.json"},"keywords":["nestjs","keycloak","typescript"],"repository":{"type":"git","url":"git+https://github.com/ferrerojosh/nest-keycloak-connect.git"},"bugs":{"url":"https://github.com/ferrerojosh/nest-keycloak-connect/issues"},"dependencies":{"reflect-metadata":"^0.1.12","@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","keycloak-connect":"^9.0.2","request-promise":"^4.2.5"},"devDependencies":{"cpr":"^3.0.1","prettier":"^1.19.1","reflect-metadata":"^0.1.12","rimraf":"^3.0.2","typescript":"^3.8.3"},"homepage":"https://github.com/ferrerojosh/nest-keycloak-connect#readme","_id":"@cenkce/nest-keycloak-connect@1.1.0","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-2to5gwthHVEBO0hGLrcu3JLsZwynXp7ONLhUYJo9AO26GahXWG/nvvw/ph5jb/YlGoR+GFhORuLlfFJHHg/xMQ==","shasum":"2ebbbf8a34bbccb95b5740bf467e7f86cd172345","tarball":"https://registry.npmjs.org/@cenkce/nest-keycloak-connect/-/nest-keycloak-connect-1.1.0.tgz","fileCount":37,"unpackedSize":28330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqWOsCRA9TVsSAnZWagAA7E8QAJuDueuToBEQo8zzmf7l\nBWjpq+PMm6rMlMvDXxHVgvvZGukfF/3el1Z+IUR08roVaeTlja54gLow/c3P\npHWqJGdB0hfrryN1ACJJW1/OgTfPcGXgx6pQ5rKZteNIBG2qKB2aamjep3F4\nOaW1K+xFhZ+xGTYQ2rXe0/msmiKmSt0SiGZc5Bu5M9HEioymJfyVFCTIS80d\nykOZniYY+FwfCp+mkuCo3yLtD4i/27OP7J7IdaVEqTmkAl5/UzwHk/iqzdDW\njqM1j4eEUySI024Psluk6eg2kwTsbv+64EZE0cBzp/qnKl3CjJs10NKoJiek\n2yMpHflzMNlyrngOESy+4hTg88OO+HhppS0k20bSNzSSpQOdHnU8Q22NJout\nHkZ52WEV1uwGIA1Aqp68xcAYcxRheTvuEYht7PBos3LOfI3HBamAxxHujXaF\nB3Zy117lsvWlWgr8CkaPojTedTxoa4LyEu+FB7rvk/Cgm/k4r/j5PZte5ZhT\nxnDi43bdavYAnVXHOf/7dRewv2fF0wCFTzmZSxrFifC7NZ/KuZR+y4Z1z46n\nlMI5zW+/kpUJhDRjDHnEXryKJFcB7TNLzNHbQtOe3HeaoWLa2VZBYOLmq8kQ\n6tNIgsGV3JHJk6kYHBixQSeFvfKqyj48WUd5IK16t1EEGNp+1nBv/VwGK7qc\ngG89\r\n=lH20\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFY+AnMs1quZdCt991t3ZZ3sZ8GPoVUW5IBgtF1FWnHmAiAkL0FC+wwuRPPb66eJqq7aXsFrmS09py21HZ6/yk4C4g=="}]},"maintainers":[{"name":"cenkce","email":"mail@cenkcetinkaya.com"}],"_npmUser":{"name":"cenkce","email":"mail@cenkcetinkaya.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nest-keycloak-connect_1.1.0_1588159404295_0.30351061682293823"},"_hasShrinkwrap":false},"1.2.0":{"name":"@cenkce/nest-keycloak-connect","version":"1.2.0","description":"keycloak-nodejs-connect module for Nest","author":{"name":"John Joshua Ferrer","email":"johnjoshuaferrer@disroot.org"},"contributors":[{"name":"Cenk Cetinkaya","email":"mail@cenkcetinkaya.com"}],"license":"MIT","scripts":{"start:dev":"tsc -w","prebuild":"rimraf dist","build":"tsc || true","postbuild":"cpr README.md dist/ && cpr LICENSE dist/ && cpr package.json dist/","npm:publish":"npm run build && cd dist && npm publish","format":"prettier --write \"src/**/*.ts\"","lint":"tslint -p tsconfig.json -c tslint.json"},"keywords":["nestjs","keycloak","typescript"],"repository":{"type":"git","url":"git+https://github.com/cenkce/nest-keycloak-connect.git"},"bugs":{"url":"https://github.com/cenkce/nest-keycloak-connect/issues"},"dependencies":{"reflect-metadata":"^0.1.12","@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","keycloak-connect":"^9.0.2","request-promise":"^4.2.5"},"devDependencies":{"cpr":"^3.0.1","prettier":"^1.19.1","reflect-metadata":"^0.1.12","rimraf":"^3.0.2","typescript":"^3.8.3"},"gitHead":"e92125c4bd0a86231057f217716633e4eda17ab5","homepage":"https://github.com/cenkce/nest-keycloak-connect#readme","_id":"@cenkce/nest-keycloak-connect@1.2.0","_nodeVersion":"11.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-d/BcWsMIXCOY8sTuj1MOdZU0Q6kzF7UJipF+pt8sAzE00exhYZXS08r5i4VMhJCduldoj1OPe16BJKmhrRs6Jw==","shasum":"320cd4971142220b18beb7ee6fee723cf0e14b31","tarball":"https://registry.npmjs.org/@cenkce/nest-keycloak-connect/-/nest-keycloak-connect-1.2.0.tgz","fileCount":60,"unpackedSize":54213,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSrutCRA9TVsSAnZWagAAeRkP/RNFyl3g9fQ16lKdwczF\nOAIVgozhC9+SwY2ECxbtq6WljHnTdaPwmBsDQugbDG212FuE9jLVx31zMdsC\nzzOvxhCyohCoJivIiOvRRJvXwMuMMaAiA+Xbe3axVy0hgaq01g07wJYPCRDi\nmI1uXc0k6rmpfjMx1b43wTkBidV74RHyooef5UbcVQU/WQNEYy/rOAiPVnL0\nTIsUgs5A4OeZi3wA3KlHyu+0JSwjwWtl89rseLXEjj0HiHC1+soFrYrr+s0s\nt33ZdO7onZAOf0ru4w+CtE8/hoAHjVzqIAI+02r82N6iGPAHCbUNPyadsiNJ\nTE1G7kGrOtM9XuURwAEWwUBEaBqVcOCOtZlYNH4DdQ3QdhI7WXXR+kzpgrVN\n+0BbB/pwdr7o9JLD8dvw6ysAwVVfy5B6eFxRAnBApbC6yEW18CsJvgLqq7Ke\n9jsWqgOXaz4DDe4fQ2nzaXiY00hp8TjCHWwFOQzG+5dkAIAjOYhBsjnolXi0\nhboJXbiXroK+AHG4o8Qqx2BJ4be00h6a49dudI4IlkGot2GaLPbR62p0abzf\no7lMI7nZ4aSYEt0scDgkhN2ILUooRuYAAuugWH1XLsm9WdL+AdRVEw2CTpA4\n+sed1VOhxBBD7wCbQdjnAGVsM/jH2KgfC9/wXXMWYR4sT+a6k5rLGCIBrOL7\n/lCf\r\n=L4Bc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEjp0FjYWY3PLOxIkyAH8Y1vmhLR+Ucf9wMpMOe8Hj3+AiAD2Naa+tqiJJThzcbrlk2FXG+6MqIp0Txb7JPK6gLm6Q=="}]},"maintainers":[{"name":"cenkce","email":"mail@cenkcetinkaya.com"}],"_npmUser":{"name":"cenkce","email":"mail@cenkcetinkaya.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nest-keycloak-connect_1.2.0_1598733229305_0.21997175714833728"},"_hasShrinkwrap":false}},"time":{"created":"2020-04-07T15:56:44.890Z","1.0.0":"2020-04-07T15:56:45.359Z","modified":"2022-04-04T22:19:06.953Z","1.0.1":"2020-04-07T16:03:37.383Z","1.0.2":"2020-04-11T13:29:07.624Z","1.1.0":"2020-04-29T11:23:24.410Z","1.2.0":"2020-08-29T20:33:49.452Z"},"maintainers":[{"name":"cenkce","email":"mail@cenkcetinkaya.com"}],"description":"keycloak-nodejs-connect module for Nest","homepage":"https://github.com/cenkce/nest-keycloak-connect#readme","keywords":["nestjs","keycloak","typescript"],"repository":{"type":"git","url":"git+https://github.com/cenkce/nest-keycloak-connect.git"},"author":{"name":"John Joshua Ferrer","email":"johnjoshuaferrer@disroot.org"},"bugs":{"url":"https://github.com/cenkce/nest-keycloak-connect/issues"},"license":"MIT","readme":"# Nest Keycloak Connect\r\n\r\nAn adapter for [keycloak-nodejs-connect](https://github.com/keycloak/keycloak-nodejs-connect).\r\n\r\n## Features\r\n\r\n- Protect your resources using [Keycloak's Authorization Services](https://www.keycloak.org/docs/latest/authorization_services/).\r\n- Simply add `@Resource` and `@Scopes` in your controllers and you're good to go.\r\n- Compatible with [Fastify](https://github.com/fastify/fastify) platform.\r\n\r\n## Installation\r\n\r\n### Yarn\r\n\r\n```bash\r\nyarn add nest-keycloak-connect\r\n```\r\n\r\n### NPM\r\n\r\n```bash\r\nnpm install nest-keycloak-connect --save\r\n```\r\n\r\n## Getting Started\r\n\r\nRegister the module in app.module.ts\r\n\r\n```typescript\r\nimport { Module } from '@nestjs/common';\r\nimport { KeycloakConnectModule, ResourceGuard, AuthGuard } from 'nest-keycloak-connect';\r\n\r\n@Module({\r\n  imports: [KeycloakConnectModule.register({\r\n    authServerUrl: 'http://localhost:8080/auth',\r\n    realm: 'master',\r\n    clientId: 'my-nestjs-app',\r\n    secret: 'secret',\r\n  })],\r\n  providers: [\r\n    // These are in order, see https://docs.nestjs.com/guards#binding-guards\r\n    // for more information\r\n\r\n    // This adds a global level authentication guard, you can also have it scoped\r\n    // if you like.\r\n    //\r\n    // Will return a 401 unauthorized when it is unable to\r\n    // verify the JWT token or Bearer header is missing.\r\n    {\r\n      provide: APP_GUARD,\r\n      useClass: AuthGuard,\r\n    },\r\n    // This adds a global level resource guard, which is permissive.\r\n    // Only controllers annotated with @Resource and methods with @Scopes\r\n    // are handled by this guard.\r\n    {\r\n      provide: APP_GUARD,\r\n      useClass: ResourceGuard,\r\n    },\r\n  ],\r\n})\r\nexport class AppModule {}\r\n```\r\n\r\nCreate Public Paths\r\n\r\n```typescript\r\nimport { Resource, Scopes, KeycloakService, Roles, KeycloakedRequest } from '@cenkce/nest-keycloak-connect';\r\nimport { Controller, Get, Delete, Put, Post, Param } from '@nestjs/common';\r\n\r\n@Controller()\r\n@Resource(Product.name)\r\nexport class AppController {\r\n  constructor(private service: keycloakService: KeycloakService) {}\r\n\r\n  @PublicPath()\r\n  @Get('login')\r\n  @Render('login.hbs')\r\n  login(@Res() resp: FastifyReply<any>, req: KeycloakedRequest<FastifyRequest>) {\r\n    console.log('/login');\r\n    if(req.grant){\r\n      resp.status(302).redirect('/notifications/direct');\r\n      return {}\r\n    }\r\n\r\n    return {};\r\n  }\r\n\r\n  @PublicPath()\r\n  @Post('login')\r\n  async auth(@Res() resp: FastifyReply<any>, @Body() body, @Session() session) {\r\n    try {\r\n      const res = await this.keycloakService.login(body.user, body.password);\r\n    \r\n      if(typeof res === 'string' && res.indexOf('access_token') !== -1){\r\n        session.auth = true;\r\n        session.token = res;\r\n        resp.status(302).redirect('/notifications/direct');\r\n      }\r\n    } catch(e) {\r\n      throw new HttpException({\r\n        status: HttpStatus.INTERNAL_SERVER_ERROR,\r\n        error: e.message,\r\n      }, HttpStatus.INTERNAL_SERVER_ERROR);\r\n    }\r\n  }\r\n\r\n  @PublicPath()\r\n  @Get('logout')\r\n  logout(@Res() resp: FastifyReply<any>, @Res() req:FastifyRequest){\r\n    req.session.sessionId && req.destroySession((e) => {\r\n      throw new HttpException({\r\n        status: HttpStatus.INTERNAL_SERVER_ERROR,\r\n        error: e.message,\r\n      }, HttpStatus.INTERNAL_SERVER_ERROR);\r\n    });\r\n    resp.status(302).redirect('/login');\r\n  }\r\n}\r\n```\r\n\r\nAuthorization Using **@Roles()** and **@Scopes()**\r\n\r\n- Usage of @Roles decorater\r\n  - @Roles(\"role_name\", /* or */, \"role_name2\")\r\n  - @Roles([\"role_name\", /* and */, \"role_name2\"])\r\n  - @Roles([\"role_name\", /* and */, \"role_name2\"], /* or */ \"role_name3\" )\r\n  - @Roles([\"role_name\", /* and */, \"role_name2\"], /* or */ [\"role_name3\", /* and */, \"role_name4\"] )\r\n\r\n\r\n\r\n```typescript\r\nimport { Resource, Scopes } from '@cenkce/nest-keycloak-connect';\r\nimport { Controller, Get, Delete, Put, Post, Param } from '@nestjs/common';\r\nimport { Product } from './product';\r\nimport { ProductService } from './product.service';\r\n\r\n@Controller()\r\n@Resource(Product.name)\r\nexport class ProductController {\r\n  constructor(private service: ProductService) {}\r\n\r\n  @Get()\r\n  @Roles(\"realm:admin\")\r\n  @Scopes('View', 'View All')\r\n  async findAll() {\r\n    return await this.service.findAll();\r\n  }\r\n\r\n  @Get(':code')\r\n  @Roles(\"realm:admin\", \"realm:user\")\r\n  @Scopes('View')\r\n  async findByCode(@Param('code') code: string) {\r\n    return await this.service.findByCode(code);\r\n  }\r\n\r\n  @Post()\r\n  @Scopes('Create')\r\n  async create(@Body product: Product) {\r\n    return await this.service.create(product);\r\n  }\r\n\r\n  @Delete(':code')\r\n  @Scopes('Delete')\r\n  async deleteByCode(@Param('code') code: string) {\r\n    return await this.service.deleteByCode(code);\r\n  }\r\n\r\n  @Put(':code')\r\n  @Scopes('Edit')\r\n  async update(@Param('code') code: string, @Body product: Product) {\r\n    return await this.service.update(code, product);\r\n  }\r\n}\r\n```\r\n","readmeFilename":"README.md","contributors":[{"name":"Cenk Cetinkaya","email":"mail@cenkcetinkaya.com"}]}