login.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package libamuse
  2. import (
  3. "notabug.org/apiote/amuse/accounts"
  4. "notabug.org/apiote/gott"
  5. )
  6. func renderLogin(args ...interface{}) interface{} {
  7. result := args[1].(*Result)
  8. target := args[3].(string)
  9. var authError error
  10. if args[2] != nil {
  11. authError = args[2].(error)
  12. }
  13. result.page = result.renderer.RenderLogin(result.languages, authError, target)
  14. return gott.Tuple(args)
  15. }
  16. func ShowLogin(language, mimetype string, authErr *accounts.AuthError, target string) (string, error) {
  17. r, err := gott.
  18. NewResult(gott.Tuple{&RequestData{language: language, mimetype: mimetype}, &Result{}, authErr, target}).
  19. Bind(parseLanguage).
  20. Bind(createRenderer).
  21. Map(renderLogin).
  22. Finish()
  23. if err != nil {
  24. return "", err
  25. } else {
  26. return r.(gott.Tuple)[1].(*Result).page, nil
  27. }
  28. }
  29. func DoLogin(username, password, sfa string, remember bool) (string, error) {
  30. return accounts.Login(username, password, sfa, remember)
  31. }
  32. func renderLoggedOut(args ...interface{}) interface{} {
  33. result := args[1].(*Result)
  34. result.page = result.renderer.RenderLoggedOut(result.languages)
  35. return gott.Tuple(args)
  36. }
  37. func ShowLoggedOut(languages, mimetype string) (string, error) {
  38. r, err := gott.
  39. NewResult(gott.Tuple{&RequestData{language: languages, mimetype: mimetype}, &Result{}}).
  40. Bind(parseLanguage).
  41. Bind(createRenderer).
  42. Map(renderLoggedOut).
  43. Finish()
  44. if err != nil {
  45. return "", err
  46. } else {
  47. return r.(gott.Tuple)[1].(*Result).page, nil
  48. }
  49. }