@@ -82,10 +82,11 @@ function passafari_command_update(event) {
82
82
if ( credential ) {
83
83
var updateCallback = function ( code ) { console . log ( "passafari_command_update: response code '" + code + "'." ) } ;
84
84
var tab = undefined ;
85
- var entryId = credential . Uuid ;
85
+ var entry_id = credential . Uuid ;
86
86
var username = credential . Login ;
87
87
var password = credential . Password ;
88
- var url = safari . application . activeBrowserWindow . activeTab . url ;
88
+ var url = passafari_format_url ( passafari_active_tab_url ( ) ) ;
89
+ var submit_url = passafari_format_submit_url ( credential . SubmitUrl ) ;
89
90
90
91
if ( password === undefined || password === "" ) {
91
92
var passwords = passafari_generate_password ( ) ;
@@ -95,7 +96,7 @@ function passafari_command_update(event) {
95
96
passafari_notify_injected ( "passafari_message_fillin" , [ credential ] ) ;
96
97
}
97
98
}
98
- keepass . updateCredentials ( updateCallback , tab , entryId , username , password , url ) ;
99
+ keepass . updateCredentials ( updateCallback , tab , entry_id , username , password , url , submit_url ) ;
99
100
} else {
100
101
console . log ( "passafari_command_update: no credential found in cache for index '" + idx + "'." ) ;
101
102
}
@@ -124,6 +125,7 @@ function passafari_message_readout(event) {
124
125
var credential_upd = clone ( credential ) ;
125
126
credential_upd . passafari_command = "passafari_command_update"
126
127
credential_upd . Password = readout . Password ;
128
+ credential_upd . SubmitUrl = readout . SubmitUrl ;
127
129
credentials . push ( credential_upd ) ;
128
130
continue ;
129
131
} else {
@@ -163,27 +165,30 @@ function passafari_display_credentials(credentials) {
163
165
var menu_item_image = undefined ;
164
166
165
167
if ( credential . passafari_command === "passafari_command_select" ) {
166
- //menu_item_label = "credentials.fillin".toLocaleString() + ": " + credential.Login + " (" + credential.Name + ")";
167
168
menu_item_label = credential . Login + " (" + credential . Name + ")" ;
168
169
menu_item_image = safari . extension . baseURI + "images/font-awesome-pencil-square-o.png" ;
169
170
} else if ( credential . passafari_command === "passafari_command_update" && credential . Uuid !== undefined ) {
170
- //menu_item_label = "credentials.update".toLocaleString() + ": " + credential.Login + " (" + credential.Name + ")";
171
- menu_item_label = credential . Login + " (" + credential . Name + ")" ;
171
+ menu_item_label = credential . Login + " (" + credential . Name ;
172
172
menu_item_image = safari . extension . baseURI + "images/font-awesome-floppy-o.png" ;
173
173
174
+ if ( credential . Password === undefined || credential . Password === "" ) {
175
+ menu_item_label = menu_item_label + "; " + "credentials.password_generated" . toLocaleString ( ) + ")" ;
176
+ } else {
177
+ menu_item_label = menu_item_label + "; " + "credentials.password_entered" . toLocaleString ( ) + ")" ;
178
+ }
179
+
174
180
if ( ! menu_update_item_added ) {
175
181
menu . appendSeparator ( "passafari_credentials_update_section" ) ;
176
182
menu_update_item_added = true ;
177
183
}
178
184
} else if ( credential . passafari_command === "passafari_command_update" && credential . Uuid === undefined ) {
179
- //menu_item_label = "credentials.add".toLocaleString() + ": " + credential.Login;
180
185
menu_item_label = credential . Login ;
181
186
menu_item_image = safari . extension . baseURI + "images/font-awesome-plus-square-o.png" ;
182
187
183
188
if ( credential . Password === undefined || credential . Password === "" ) {
184
189
menu_item_label = menu_item_label + " (" + "credentials.password_generated" . toLocaleString ( ) + ")" ;
185
190
} else {
186
- menu_item_label = menu_item_label + " (" + "credentials.password_readout " . toLocaleString ( ) + ")" ;
191
+ menu_item_label = menu_item_label + " (" + "credentials.password_entered " . toLocaleString ( ) + ")" ;
187
192
}
188
193
189
194
if ( ! menu_add_item_added ) {
@@ -215,6 +220,10 @@ function passafari_toolbar_item() {
215
220
return safari . extension . toolbarItems [ 0 ] ;
216
221
}
217
222
223
+ function passafari_active_tab_url ( ) {
224
+ return safari . application . activeBrowserWindow . activeTab . url ;
225
+ }
226
+
218
227
// UTILS global.js related
219
228
function passafari_credentials_cache ( credentials ) {
220
229
if ( credentials === undefined ) {
@@ -229,6 +238,60 @@ function passafari_credentials_cache(credentials) {
229
238
return credentials ;
230
239
}
231
240
241
+ // UTILS global.js related
242
+ function passafari_format_url ( url ) {
243
+ var format = safari . extension . settings . url_format ;
244
+
245
+ if ( format === "protocol_host_path" ) {
246
+ return passafari_url_protocol_host_path_only ( url ) ;
247
+ } else if ( format === "protocol_host" ) {
248
+ return passafari_url_protocol_host_only ( url ) ;
249
+ } else if ( format === "host" ) {
250
+ return passafari_url_host_only ( url ) ;
251
+ } else {
252
+ return url ;
253
+ }
254
+ }
255
+
256
+ // UTILS global.js related
257
+ function passafari_format_submit_url ( url ) {
258
+ var format = safari . extension . settings . submit_url_format ;
259
+
260
+ if ( format === "protocol_host_path" ) {
261
+ return passafari_url_protocol_host_path_only ( url ) ;
262
+ } else if ( format === "protocol_host" ) {
263
+ return passafari_url_protocol_host_only ( url ) ;
264
+ } else if ( format === "host" ) {
265
+ return passafari_url_host_only ( url ) ;
266
+ } else {
267
+ return url ;
268
+ }
269
+ }
270
+
271
+ // UTILS global.js related (passafari_format_url & passafari_format_submit_url)
272
+ function passafari_url_host_only ( url ) {
273
+ var link = document . createElement ( "a" ) ;
274
+ link . href = url ;
275
+
276
+ return link . host ;
277
+ }
278
+
279
+ // UTILS global.js related (passafari_format_url & passafari_format_submit_url)
280
+ function passafari_url_protocol_host_only ( url ) {
281
+ var link = document . createElement ( "a" ) ;
282
+ link . href = url ;
283
+
284
+ return link . protocol + "//" + link . host ;
285
+ }
286
+
287
+ // UTILS global.js related (passafari_format_url & passafari_format_submit_url)
288
+ function passafari_url_protocol_host_path_only ( url ) {
289
+ var link = document . createElement ( "a" ) ;
290
+ link . href = url ;
291
+
292
+ return link . protocol + "//" + link . host + link . pathname ;
293
+ }
294
+
232
295
// UTILS global.js / keepass.js related
233
296
function passafari_associate ( event ) {
234
297
if ( keepass . isConfigured ( ) ) {
@@ -251,21 +314,21 @@ function passafari_associate(event) {
251
314
function passafari_retrieve_credentials ( callback ) {
252
315
callback = ( callback === undefined ) ? function ( credentials ) { } : callback ;
253
316
var tab = undefined ;
254
- var url = safari . application . activeBrowserWindow . activeTab . url ;
255
- var submiturl = undefined ;
256
- var forceCallback = false ;
257
- var triggerUnlock = true ;
317
+ var url = passafari_format_url ( passafari_active_tab_url ( ) ) ;
318
+ var submit_url = passafari_format_submit_url ( passafari_active_tab_url ( ) ) ;
319
+ var force_callback = false ;
320
+ var trigger_unlock = true ;
258
321
259
322
if ( url ) {
260
- return keepass . retrieveCredentials ( callback , tab , url , submiturl , forceCallback , triggerUnlock ) ;
323
+ return keepass . retrieveCredentials ( callback , tab , url , submit_url , force_callback , trigger_unlock ) ;
261
324
} else {
262
325
return undefined ;
263
326
}
264
327
}
265
328
266
329
// UTILS global.js / keepass.js related
267
- function passafari_generate_password ( callback , forceCallback ) {
330
+ function passafari_generate_password ( callback , force_callback ) {
268
331
callback = ( callback === undefined ) ? function ( passwords ) { } : callback ;
269
332
270
- return keepass . generatePassword ( callback , undefined , forceCallback ) ;
333
+ return keepass . generatePassword ( callback , undefined , force_callback ) ;
271
334
}
0 commit comments