@kapeta/local-cluster-service 0.14.3 → 0.14.4

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/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [0.14.4](https://github.com/kapetacom/local-cluster-service/compare/v0.14.3...v0.14.4) (2023-08-09)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Handle missing authentication gracefully ([329d091](https://github.com/kapetacom/local-cluster-service/commit/329d09148261da3c624defcc252f2f700b3b4dc2))
7
+
1
8
  ## [0.14.3](https://github.com/kapetacom/local-cluster-service/compare/v0.14.2...v0.14.3) (2023-08-08)
2
9
 
3
10
 
@@ -16,7 +16,11 @@ router.use('/registry', createAPIRoute(remoteServices.registry ?? 'https://regis
16
16
  nonce: false,
17
17
  userAgent: `KapetaDesktopCluster/${packageJson.version}`,
18
18
  tokenFetcher: () => {
19
- return new nodejs_api_client_1.KapetaAPI().getAccessToken();
19
+ const api = new nodejs_api_client_1.KapetaAPI();
20
+ if (api.hasToken()) {
21
+ return api.getAccessToken();
22
+ }
23
+ return null;
20
24
  }
21
25
  }));
22
26
  exports.default = router;
@@ -16,6 +16,13 @@ function getBaseUrl() {
16
16
  }
17
17
  router.use('/', cors_1.corsHandler);
18
18
  router.put('/:handle/:name', async (req, res) => {
19
+ if (!api.hasToken()) {
20
+ res.status(401).send({
21
+ status: 401,
22
+ error: 'Unauthorized',
23
+ });
24
+ return;
25
+ }
19
26
  const endpoint = getBaseUrl();
20
27
  if (!req.headers['content-type']) {
21
28
  res.status(400).send({
@@ -172,8 +172,8 @@ class ContainerManager {
172
172
  const processor = async (task) => {
173
173
  const timeStarted = Date.now();
174
174
  const api = new nodejs_api_client_1.KapetaAPI();
175
- const accessToken = await api.getAccessToken();
176
- const auth = image.startsWith('docker.kapeta.com/')
175
+ const accessToken = api.hasToken() ? await api.getAccessToken() : null;
176
+ const auth = accessToken && image.startsWith('docker.kapeta.com/')
177
177
  ? {
178
178
  username: 'kapeta',
179
179
  password: accessToken,
@@ -11,7 +11,12 @@ const api = new nodejs_api_client_1.KapetaAPI();
11
11
  router.use('/', cors_1.corsHandler);
12
12
  router.get('/current', async (req, res) => {
13
13
  try {
14
- res.send(await api.getCurrentIdentity());
14
+ if (api.hasToken()) {
15
+ res.send(await api.getCurrentIdentity());
16
+ }
17
+ else {
18
+ res.status(404).send();
19
+ }
15
20
  }
16
21
  catch (e) {
17
22
  res.status(e.status ?? 500).send(e);
@@ -19,7 +24,12 @@ router.get('/current', async (req, res) => {
19
24
  });
20
25
  router.get('/:identityId/memberships', async (req, res) => {
21
26
  try {
22
- res.send(await api.getMemberships(req.params.identityId));
27
+ if (api.hasToken()) {
28
+ res.send(await api.getMemberships(req.params.identityId));
29
+ }
30
+ else {
31
+ res.send([]);
32
+ }
23
33
  }
24
34
  catch (e) {
25
35
  res.status(e.status ?? 500).send(e);
@@ -11,7 +11,11 @@ router.use('/registry', createAPIRoute(remoteServices.registry ?? 'https://regis
11
11
  nonce: false,
12
12
  userAgent: `KapetaDesktopCluster/${packageJson.version}`,
13
13
  tokenFetcher: () => {
14
- return new KapetaAPI().getAccessToken();
14
+ const api = new KapetaAPI();
15
+ if (api.hasToken()) {
16
+ return api.getAccessToken();
17
+ }
18
+ return null;
15
19
  }
16
20
  }));
17
21
  export default router;
@@ -11,6 +11,13 @@ function getBaseUrl() {
11
11
  }
12
12
  router.use('/', corsHandler);
13
13
  router.put('/:handle/:name', async (req, res) => {
14
+ if (!api.hasToken()) {
15
+ res.status(401).send({
16
+ status: 401,
17
+ error: 'Unauthorized',
18
+ });
19
+ return;
20
+ }
14
21
  const endpoint = getBaseUrl();
15
22
  if (!req.headers['content-type']) {
16
23
  res.status(400).send({
@@ -166,8 +166,8 @@ class ContainerManager {
166
166
  const processor = async (task) => {
167
167
  const timeStarted = Date.now();
168
168
  const api = new KapetaAPI();
169
- const accessToken = await api.getAccessToken();
170
- const auth = image.startsWith('docker.kapeta.com/')
169
+ const accessToken = api.hasToken() ? await api.getAccessToken() : null;
170
+ const auth = accessToken && image.startsWith('docker.kapeta.com/')
171
171
  ? {
172
172
  username: 'kapeta',
173
173
  password: accessToken,
@@ -6,7 +6,12 @@ const api = new KapetaAPI();
6
6
  router.use('/', corsHandler);
7
7
  router.get('/current', async (req, res) => {
8
8
  try {
9
- res.send(await api.getCurrentIdentity());
9
+ if (api.hasToken()) {
10
+ res.send(await api.getCurrentIdentity());
11
+ }
12
+ else {
13
+ res.status(404).send();
14
+ }
10
15
  }
11
16
  catch (e) {
12
17
  res.status(e.status ?? 500).send(e);
@@ -14,7 +19,12 @@ router.get('/current', async (req, res) => {
14
19
  });
15
20
  router.get('/:identityId/memberships', async (req, res) => {
16
21
  try {
17
- res.send(await api.getMemberships(req.params.identityId));
22
+ if (api.hasToken()) {
23
+ res.send(await api.getMemberships(req.params.identityId));
24
+ }
25
+ else {
26
+ res.send([]);
27
+ }
18
28
  }
19
29
  catch (e) {
20
30
  res.status(e.status ?? 500).send(e);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kapeta/local-cluster-service",
3
- "version": "0.14.3",
3
+ "version": "0.14.4",
4
4
  "description": "Manages configuration, ports and service discovery for locally running Kapeta systems",
5
5
  "type": "commonjs",
6
6
  "exports": {
package/src/api.ts CHANGED
@@ -14,7 +14,11 @@ router.use('/registry', createAPIRoute(remoteServices.registry ?? 'https://regis
14
14
  nonce: false,
15
15
  userAgent: `KapetaDesktopCluster/${packageJson.version}`,
16
16
  tokenFetcher: () => {
17
- return new KapetaAPI().getAccessToken();
17
+ const api = new KapetaAPI();
18
+ if (api.hasToken()) {
19
+ return api.getAccessToken();
20
+ }
21
+ return null;
18
22
  }
19
23
  }));
20
24
 
@@ -18,6 +18,14 @@ function getBaseUrl() {
18
18
  router.use('/', corsHandler);
19
19
 
20
20
  router.put('/:handle/:name', async (req: Request, res: Response) => {
21
+ if (!api.hasToken()) {
22
+ res.status(401).send({
23
+ status: 401,
24
+ error: 'Unauthorized',
25
+ });
26
+ return;
27
+ }
28
+
21
29
  const endpoint = getBaseUrl();
22
30
  if (!req.headers['content-type']) {
23
31
  res.status(400).send({
@@ -250,9 +250,9 @@ class ContainerManager {
250
250
  const processor = async (task: Task) => {
251
251
  const timeStarted = Date.now();
252
252
  const api = new KapetaAPI();
253
- const accessToken = await api.getAccessToken();
253
+ const accessToken = api.hasToken() ? await api.getAccessToken() : null;
254
254
 
255
- const auth = image.startsWith('docker.kapeta.com/')
255
+ const auth = accessToken && image.startsWith('docker.kapeta.com/')
256
256
  ? {
257
257
  username: 'kapeta',
258
258
  password: accessToken,
@@ -11,7 +11,11 @@ router.use('/', corsHandler);
11
11
 
12
12
  router.get('/current', async (req: Request, res: Response) => {
13
13
  try {
14
- res.send(await api.getCurrentIdentity());
14
+ if (api.hasToken()) {
15
+ res.send(await api.getCurrentIdentity());
16
+ } else {
17
+ res.status(404).send();
18
+ }
15
19
  } catch (e: any) {
16
20
  res.status(e.status ?? 500).send(e);
17
21
  }
@@ -19,7 +23,11 @@ router.get('/current', async (req: Request, res: Response) => {
19
23
 
20
24
  router.get('/:identityId/memberships', async (req: Request, res: Response) => {
21
25
  try {
22
- res.send(await api.getMemberships(req.params.identityId));
26
+ if (api.hasToken()) {
27
+ res.send(await api.getMemberships(req.params.identityId));
28
+ } else {
29
+ res.send([]);
30
+ }
23
31
  } catch (e: any) {
24
32
  res.status(e.status ?? 500).send(e);
25
33
  }