@simitgroup/simpleapp-generator 2.0.2-u-alpha → 2.0.2-v-alpha

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/ReleaseNote.md CHANGED
@@ -1,3 +1,8 @@
1
+ [2.0.2v-alpha]
2
+
3
+ 1. Stability on startup: app initialization no longer fatals on 401/302 from profile/session checks. it triggers the normal relogin flow
4
+ 3. Navigate to /login when XHR requests are transparently redirected, preventing retry loops
5
+
1
6
  [2.0.2u-alpha]
2
7
 
3
8
  1. Enforced strict Keycloak token validation on backend (via AuthGuard + UserContext), returning clear 401 for invalid/expired tokens
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simitgroup/simpleapp-generator",
3
- "version": "2.0.2u-alpha",
3
+ "version": "2.0.2v-alpha",
4
4
  "description": "frontend nuxtjs and backend nests code generator using jsonschema.",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -34,7 +34,9 @@ export default defineNuxtPlugin( async(nuxtApp) => {
34
34
  // console.log("error catch",error)
35
35
 
36
36
  if(error?.code && error.code == 'ERR_BAD_REQUEST'){
37
- if(error.response && error.response.status==403){
37
+ if (error.response && (error.response.status == 401 || error.response.status == 302)) {
38
+ return Promise.reject(error);
39
+ } else if(error.response && error.response.status==403){
38
40
  console.warn("error status 403, redirect to external link /" )
39
41
  navigateTo('/',{external:true})
40
42
  }else{
@@ -74,7 +76,7 @@ export default defineNuxtPlugin( async(nuxtApp) => {
74
76
  fatal:true
75
77
  })
76
78
  }
77
- else if(error.response && error.response.status==302){
79
+ else if(error.response && (error.response.status==302 || error.response.status==401)){
78
80
  console.error("axios 302 session expired, start login flow")
79
81
  }else if(error.response && error.response.status){
80
82
  let errmsg = error.response.message
@@ -357,7 +357,7 @@ export default defineNuxtPlugin(async (nuxtApp) => {
357
357
  statusMessage: e.message,
358
358
  fatal: true,
359
359
  });
360
- } else if (e?.response?.status == 302) {
360
+ } else if (e?.response?.status == 302 || e?.response?.status == 401) {
361
361
  //no session
362
362
  //need authentication, relogin
363
363
  if (useRoute().meta.auth !== false) {
@@ -6,6 +6,7 @@
6
6
  */
7
7
 
8
8
  import axios from 'axios';
9
+ import fs from "node:fs";
9
10
  import { getServerSession } from '#auth'
10
11
  import type { Session } from 'next-auth';
11
12
  import { pathJoin } from '~/server/utils/path';
@@ -22,7 +23,7 @@ export default defineEventHandler(async (event:any) => {
22
23
  return sendRedirect(event, '/login', 401)
23
24
  }
24
25
  if(!session) {
25
- throw createError({ statusText: 'Unauthorized', status: 302 })
26
+ return sendRedirect(event, "/login", 302);
26
27
  }
27
28
  return new Promise<any>(async (resolve, reject) => {
28
29
 
@@ -33,6 +34,10 @@ export default defineEventHandler(async (event:any) => {
33
34
 
34
35
  const req = event.node.req;
35
36
 
37
+ if (!accessToken || typeof accessToken !== "string") {
38
+ return sendRedirect(event, "/login", 302);
39
+ }
40
+
36
41
  if(req.method == 'POST' || req.method == 'PUT' || req.method == 'PATCH') {
37
42
 
38
43
  forwardData = await readBody(event);
@@ -135,13 +140,9 @@ export default defineEventHandler(async (event:any) => {
135
140
  }else{
136
141
 
137
142
  if (error.response?.status && error.response.status == 401) {
138
- // return sendRedirect(event, "/login", 401);
139
- reject({
140
- statusMessage: error.response.statusText,
141
- statusCode: 401,
142
- data: error.response.data,
143
- });
144
- return;
143
+ // rejecting would bubble a 401 into the client and often renders the Nuxt error page.
144
+ // Instead, end the request with a redirect so the browser can enter the login flow.
145
+ return sendRedirect(event, "/login", 401);
145
146
  }
146
147
  reject({
147
148
  statusMessage: error.response.statusText,
@@ -16,15 +16,13 @@ export default defineEventHandler(async (event:any) => {
16
16
 
17
17
  try {
18
18
  session = await getServerSession(event)
19
-
20
19
  } catch (error) {
21
- return sendRedirect(event, '/login', 401)
20
+ return sendRedirect(event, '/login', 302)
22
21
  }
23
22
 
24
23
  return new Promise<any>(async (resolve, reject) => {
25
24
  if(!session) {
26
- reject({ statusMessage: 'Unauthorized', statusCode: 401 });
27
- throw createError({ statusMessage: 'Unauthorized', statusCode: 401 })
25
+ return sendRedirect(event, '/login', 302)
28
26
  }
29
27
  const seperateSymbol = '.';
30
28
  const accessToken = session?.accessToken;
@@ -33,6 +31,10 @@ export default defineEventHandler(async (event:any) => {
33
31
 
34
32
  const req = event.node.req;
35
33
 
34
+ if (!accessToken || typeof accessToken !== 'string') {
35
+ return sendRedirect(event, '/login', 302);
36
+ }
37
+
36
38
  if(req.method == 'POST' || req.method == 'PUT' || req.method == 'PATCH') {
37
39
 
38
40
  forwardData = await readBody(event);
@@ -78,16 +80,13 @@ export default defineEventHandler(async (event:any) => {
78
80
  // console.log('#####################################')
79
81
  // console.log(axiosConfig);
80
82
  // console.log('#####################################')
81
- if (error.response?.status && error.response.status == '401') {
82
- //return reject({ statusMessage: 'Unauthorized', statusCode: 401 });
83
- return sendRedirect(event, '/login', 401)
84
- // throw createError({ statusMessage: 'Unauthorized', statusCode: 401 })
83
+ if (error.response?.status && error.response.status == 401) {
84
+ return sendRedirect(event, '/login', 302)
85
85
  }
86
86
 
87
- // reject(error.data)
88
- reject({
89
- statusMessage: error.response.statusText,
90
- statusCode: error.response.status ,
87
+ reject({
88
+ statusMessage: error.response.statusText,
89
+ statusCode: error.response.status,
91
90
  data: error.response.data
92
91
  }); // resolve({ status: 'ok' })
93
92
  // throw createError({ statusMessage: 'Bad Requests', statusCode: 404 })