@@ -184,32 +184,156 @@ const highlightCode = (json) => {
184184 }
185185}
186186const submitEntitlement = async () => {
187- requiredRoles .value .forEach (async (formRole , idx ) => {
187+ for (const [idx, formRole] of requiredRoles .value .entries ()) {
188+ const role = roleForm [` role${formRole .role }${idx } ` ]
189+
188190 if (formRole .requires_bank_id ) {
189- const role = roleForm [ ` role${ formRole . role }${ idx } ` ]
191+ // Bank-level entitlement
190192 const bankId = roleForm [` bankId${formRole .role }${idx } ` ]
191- if (role && bankId && isUserLogon ) {
193+
194+ if (! role || ! bankId ) {
195+ ElNotification ({
196+ duration: elMessageDuration ,
197+ title: ' Missing Information' ,
198+ message: ' Bank ID is required for this role.' ,
199+ position: ' bottom-right' ,
200+ type: ' error'
201+ })
202+ continue
203+ }
204+
205+ if (! isUserLogon ) {
206+ ElNotification ({
207+ duration: elMessageDuration ,
208+ title: ' Not Authenticated' ,
209+ message: ' Please login to request this role.' ,
210+ position: ' bottom-right' ,
211+ type: ' error'
212+ })
213+ continue
214+ }
215+
216+ try {
192217 const response = await createEntitlement (bankId , role )
193- let type = ' success'
194- if (' code' in response && response [' code' ] >= 400 ) {
195- type = ' error'
218+
219+ // Check if response is an error object (from superagent)
220+ const isError = response && response .error && response .error .response
221+ const errorBody = isError ? response .error .response .body : null
222+ const statusCode = isError ? response .error .status : null
223+
224+ if (isError && errorBody && errorBody .code >= 400 ) {
225+ // Parse error message from body
226+ let errorMessage = ' Failed to create entitlement'
227+ if (errorBody .message ) {
228+ // Message might be double-encoded JSON string
229+ try {
230+ const parsedMessage = JSON .parse (errorBody .message )
231+ errorMessage = parsedMessage .message || errorBody .message
232+ } catch {
233+ errorMessage = errorBody .message
234+ }
235+ }
236+
237+ ElNotification ({
238+ duration: elMessageDuration ,
239+ title: ` Error (${errorBody .code }) ` ,
240+ message: errorMessage ,
241+ position: ' bottom-right' ,
242+ type: ' error'
243+ })
244+ } else {
245+ // Success
246+ ElNotification ({
247+ duration: elMessageDuration ,
248+ title: ' Success' ,
249+ message: ` Entitlement "${role }" requested successfully for bank "${bankId }" ` ,
250+ position: ' bottom-right' ,
251+ type: ' success'
252+ })
196253 }
254+ } catch (error : any ) {
255+ ElNotification ({
256+ duration: elMessageDuration ,
257+ title: ' Request Failed' ,
258+ message: error .message || ' An error occurred while requesting the entitlement' ,
259+ position: ' bottom-right' ,
260+ type: ' error'
261+ })
262+ }
263+ } else {
264+ // System-wide entitlement (no bank_id required)
265+ if (! role ) {
266+ ElNotification ({
267+ duration: elMessageDuration ,
268+ title: ' Missing Information' ,
269+ message: ' Role name is required.' ,
270+ position: ' bottom-right' ,
271+ type: ' error'
272+ })
273+ continue
274+ }
275+
276+ if (! isUserLogon ) {
197277 ElNotification ({
198278 duration: elMessageDuration ,
199- message: response .message ,
279+ title: ' Not Authenticated' ,
280+ message: ' Please login to request this role.' ,
200281 position: ' bottom-right' ,
201- type
282+ type: ' error '
202283 })
203- } else {
284+ continue
285+ }
286+
287+ try {
288+ // System-wide entitlement uses empty string for bank_id
289+ const response = await createEntitlement (' ' , role )
290+
291+ // Check if response is an error object (from superagent)
292+ const isError = response && response .error && response .error .response
293+ const errorBody = isError ? response .error .response .body : null
294+ const statusCode = isError ? response .error .status : null
295+
296+ if (isError && errorBody && errorBody .code >= 400 ) {
297+ // Parse error message from body
298+ let errorMessage = ' Failed to create entitlement'
299+ if (errorBody .message ) {
300+ // Message might be double-encoded JSON string
301+ try {
302+ const parsedMessage = JSON .parse (errorBody .message )
303+ errorMessage = parsedMessage .message || errorBody .message
304+ } catch {
305+ errorMessage = errorBody .message
306+ }
307+ }
308+
309+ ElNotification ({
310+ duration: elMessageDuration ,
311+ title: ` Error (${errorBody .code }) ` ,
312+ message: errorMessage ,
313+ position: ' bottom-right' ,
314+ type: ' error'
315+ })
316+ } else {
317+ // Success
318+ ElNotification ({
319+ duration: elMessageDuration ,
320+ title: ' Success' ,
321+ message: ` System-wide entitlement "${role }" requested successfully ` ,
322+ position: ' bottom-right' ,
323+ type: ' success'
324+ })
325+ }
326+ } catch (error : any ) {
204327 ElNotification ({
205328 duration: elMessageDuration ,
206- message: ' Bank Id is required.' ,
329+ title: ' Request Failed' ,
330+ message: error .message || ' An error occurred while requesting the entitlement' ,
207331 position: ' bottom-right' ,
208332 type: ' error'
209333 })
210334 }
211335 }
212- })
336+ }
213337}
214338onBeforeMount (async () => {
215339 const route = useRoute ()
0 commit comments