MCPcopy Create free account
hub / github.com/boringproxy/boringproxy / handleTokens

Method handleTokens

ui_handler.go:333–409  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request, user User, tokenData TokenData)

Source from the content-addressed store, hash-verified

331}
332
333func (h *WebUiHandler) handleTokens(w http.ResponseWriter, r *http.Request, user User, tokenData TokenData) {
334
335 r.ParseForm()
336
337 switch r.Method {
338 case "GET":
339 var tokens map[string]TokenData
340 var users map[string]User
341
342 // TODO: handle security checks in api
343 if user.IsAdmin {
344 tokens = h.db.GetTokens()
345 users = h.db.GetUsers()
346 } else {
347 tokens = make(map[string]TokenData)
348
349 for token, td := range h.db.GetTokens() {
350 if tokenData.Owner == td.Owner {
351 tokens[token] = td
352 }
353
354 }
355
356 users = make(map[string]User)
357 users[tokenData.Owner] = user
358 }
359
360 qrCodes := make(map[string]template.URL)
361 for token := range tokens {
362 adminDomain := h.db.GetAdminDomain()
363 loginUrl := fmt.Sprintf("https://%s/login?access_token=%s", adminDomain, token)
364
365 var png []byte
366 png, err := qrcode.Encode(loginUrl, qrcode.Medium, 256)
367 if err != nil {
368 w.WriteHeader(500)
369 h.alertDialog(w, r, err.Error(), "/tokens")
370 return
371 }
372
373 data := base64.StdEncoding.EncodeToString(png)
374 qrCodes[token] = template.URL("data:image/png;base64," + data)
375 }
376
377 templateData := struct {
378 Tokens map[string]TokenData
379 User User
380 Users map[string]User
381 QrCodes map[string]template.URL
382 }{
383 Tokens: tokens,
384 User: user,
385 Users: users,
386 QrCodes: qrCodes,
387 }
388
389 err := h.tmpl.ExecuteTemplate(w, "tokens.tmpl", templateData)
390 if err != nil {

Callers 1

handleWebUiRequestMethod · 0.95

Calls 5

alertDialogMethod · 0.95
GetAdminDomainMethod · 0.80
CreateTokenMethod · 0.80
GetTokensMethod · 0.45
GetUsersMethod · 0.45

Tested by

no test coverage detected