gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2025 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package v1_24
  4. import (
  5. "code.gitea.io/gitea/modules/json"
  6. "xorm.io/xorm"
  7. )
  8. func MigrateSkipTwoFactor(x *xorm.Engine) error {
  9. type LoginSource struct {
  10. TwoFactorPolicy string `xorm:"two_factor_policy NOT NULL DEFAULT ''"`
  11. }
  12. _, err := x.SyncWithOptions(
  13. xorm.SyncOptions{
  14. IgnoreConstrains: true,
  15. IgnoreIndices: true,
  16. },
  17. new(LoginSource),
  18. )
  19. if err != nil {
  20. return err
  21. }
  22. type LoginSourceSimple struct {
  23. ID int64
  24. Cfg string
  25. }
  26. var loginSources []LoginSourceSimple
  27. err = x.Table("login_source").Find(&loginSources)
  28. if err != nil {
  29. return err
  30. }
  31. for _, source := range loginSources {
  32. if source.Cfg == "" {
  33. continue
  34. }
  35. var cfg map[string]any
  36. err = json.Unmarshal([]byte(source.Cfg), &cfg)
  37. if err != nil {
  38. return err
  39. }
  40. if cfg["SkipLocalTwoFA"] == true {
  41. _, err = x.Exec("UPDATE login_source SET two_factor_policy = 'skip' WHERE id = ?", source.ID)
  42. if err != nil {
  43. return err
  44. }
  45. }
  46. }
  47. return nil
  48. }