diff --git a/bookshop/app/vue/app.js b/bookshop/app/vue/app.js
index c96797d5..18e4ef23 100644
--- a/bookshop/app/vue/app.js
+++ b/bookshop/app/vue/app.js
@@ -10,7 +10,7 @@ const books = Vue.createApp ({
list: [],
book: undefined,
order: { quantity:1, succeeded:'', failed:'' },
- user: {}
+ user: undefined
}
},
@@ -42,19 +42,25 @@ const books = Vue.createApp ({
}
},
- async fetchUserInfo() {
+ async login() {
try {
- const { data } = await axios.get('/user/me')
- books.user = data
+ const { data:user } = await axios.post('/user/login',{})
+ if (user.id !== 'anonymous') books.user = user
} catch (err) { books.user = { id: err.message } }
- }
+ },
+
+ async getUserInfo() {
+ try {
+ const { data:user } = await axios.get('/user/me')
+ if (user.id !== 'anonymous') books.user = user
+ } catch (err) { books.user = { id: err.message } }
+ },
}
}).mount("#app")
-// initially fill list of books
-books.fetch()
+books.getUserInfo()
+books.fetch() // initially fill list of books
-books.fetchUserInfo()
document.addEventListener('keydown', (event) => {
// hide user info on request
if (event.key === 'u') books.user = undefined
diff --git a/bookshop/app/vue/index.html b/bookshop/app/vue/index.html
index 36aff1d7..9795a65a 100644
--- a/bookshop/app/vue/index.html
+++ b/bookshop/app/vue/index.html
@@ -18,11 +18,17 @@
-
-
User: {{ user.id || 'anonymous' }}
-
Locale: {{ user.locale }}
-
Tenant: {{ user.tenant }}
-
+
Capire Books
diff --git a/bookshop/srv/cat-service.js b/bookshop/srv/cat-service.js
index 21c57a0d..a86f29c2 100644
--- a/bookshop/srv/cat-service.js
+++ b/bookshop/srv/cat-service.js
@@ -2,7 +2,7 @@ import cds from '@sap/cds'
export class CatalogService extends cds.ApplicationService { init(){
- const { Books } = cds.entities ('sap.capire.bookshop')
+ const { Books } = this.entities ('sap.capire.bookshop')
// Reduce stock of ordered books if available stock suffices
this.on ('submitOrder', async req => {
diff --git a/bookshop/srv/user-service.cds b/bookshop/srv/user-service.cds
index 1897f60e..47f58971 100644
--- a/bookshop/srv/user-service.cds
+++ b/bookshop/srv/user-service.cds
@@ -1,9 +1,7 @@
/**
* Exposes user information
*/
-@requires: 'authenticated-user'
service UserService {
-
/**
* The current user
*/
@@ -13,4 +11,5 @@ service UserService {
tenant : String;
}
+ action login() returns me;
}
diff --git a/bookshop/srv/user-service.js b/bookshop/srv/user-service.js
index 491dbb27..5a1ec2a4 100644
--- a/bookshop/srv/user-service.js
+++ b/bookshop/srv/user-service.js
@@ -1,4 +1,9 @@
import cds from '@sap/cds'
-export default cds.service.impl((srv) => {
- srv.on('READ', 'me', ({ tenant, user, locale }) => ({ id: user.id, locale, tenant }))
-})
+export default class UserService extends cds.Service { init(){
+ this.on('READ', 'me', ({ tenant, user, locale }) => ({ id: user.id, locale, tenant }))
+ this.on('login', (req) => {
+ if (req.user._is_anonymous)
+ req._.res.set('WWW-Authenticate','Basic realm="Users"').sendStatus(401)
+ else return this.read('me')
+ })
+}}
diff --git a/package-lock.json b/package-lock.json
index 0a87d062..d51c0121 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1172,9 +1172,9 @@
}
},
"node_modules/@sap/cds": {
- "version": "5.9.5",
- "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-5.9.5.tgz",
- "integrity": "sha512-H/LIB7WnJ3JKzywnfYd9fOLDKVQokO6/JMUUXbCx+VllYuIQFwClwZ+uYQDgWYSrHePRpuOP5TxLFuMXvhdaag==",
+ "version": "5.9.6",
+ "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-5.9.6.tgz",
+ "integrity": "sha512-zzDoRrgAbRXUQ2n+BrDErtAyylMgcJxgWhsiJvjiZVMxAucJMPp9V+WlRsaGwSm8O6STC6NHcv9PWQ7500y9EQ==",
"dependencies": {
"@sap-cloud-sdk/core": "^1.41",
"@sap-cloud-sdk/util": "^1.41",
@@ -8086,9 +8086,9 @@
}
},
"@sap/cds": {
- "version": "5.9.5",
- "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-5.9.5.tgz",
- "integrity": "sha512-H/LIB7WnJ3JKzywnfYd9fOLDKVQokO6/JMUUXbCx+VllYuIQFwClwZ+uYQDgWYSrHePRpuOP5TxLFuMXvhdaag==",
+ "version": "5.9.6",
+ "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-5.9.6.tgz",
+ "integrity": "sha512-zzDoRrgAbRXUQ2n+BrDErtAyylMgcJxgWhsiJvjiZVMxAucJMPp9V+WlRsaGwSm8O6STC6NHcv9PWQ7500y9EQ==",
"requires": {
"@sap-cloud-sdk/core": "^1.41",
"@sap-cloud-sdk/util": "^1.41",