@@ -11,7 +11,7 @@ const sessionPerms = require('../../lib/session-perms')
1111/**
1212 * @typedef {import('../../users/index').User } User
1313 * @typedef {import('../../users/site-sessions').UserSiteSession } UserSiteSession
14- *
14+ *
1515 * @typedef {Object } NavigatorSessionPublicAPIRecord
1616 * @prop {Object } profile
1717 * @prop {string } profile.url
@@ -78,20 +78,34 @@ module.exports = {
7878 } ,
7979
8080 /**
81+ * @param {string } siteUrl only usable from beaker:// origins
8182 * @returns {Promise<NavigatorSessionPublicAPIRecord> }
8283 */
83- async get ( ) {
84+ async get ( siteUrl = undefined ) {
8485 var user = await getUser ( this . sender )
85- var siteUrl = await sessionPerms . toDatOrigin ( this . sender . getURL ( ) )
86+ if ( this . sender . getURL ( ) . startsWith ( 'beaker:' ) && siteUrl ) {
87+ // trusted app, use given url
88+ siteUrl = await sessionPerms . toDatOrigin ( siteUrl )
89+ } else {
90+ // use sender url
91+ siteUrl = await sessionPerms . toDatOrigin ( this . sender . getURL ( ) )
92+ }
8693 return massageSessionRecord ( user , await userSiteSessions . get ( user . id , siteUrl ) )
8794 } ,
8895
8996 /**
97+ * @param {string } siteUrl only usable from beaker:// origins
9098 * @returns {Promise<void> }
9199 */
92- async destroy ( ) {
100+ async destroy ( siteUrl = undefined ) {
93101 var user = await getUser ( this . sender )
94- var siteUrl = await sessionPerms . toDatOrigin ( this . sender . getURL ( ) )
102+ if ( this . sender . getURL ( ) . startsWith ( 'beaker:' ) && siteUrl ) {
103+ // trusted app, use given url
104+ siteUrl = await sessionPerms . toDatOrigin ( siteUrl )
105+ } else {
106+ // use sender url
107+ siteUrl = await sessionPerms . toDatOrigin ( this . sender . getURL ( ) )
108+ }
95109 await userSiteSessions . destroy ( user . id , siteUrl )
96110 }
97111}
0 commit comments