From 37829062ad108205eed80513438b61cf8a32bd60 Mon Sep 17 00:00:00 2001 From: Gucheng Wang Date: Thu, 11 Nov 2021 00:50:08 +0800 Subject: [PATCH] Run sync user job if configured. --- main.go | 5 +++++ original/adapter.go | 7 +++---- original/public_api.go | 2 +- original/user_original.go | 13 +++++++++++++ original/user_original_test.go | 15 +++------------ 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/main.go b/main.go index d27b2078..92f64502 100644 --- a/main.go +++ b/main.go @@ -21,6 +21,7 @@ import ( _ "github.com/astaxie/beego/session/redis" "github.com/casbin/casdoor/authz" "github.com/casbin/casdoor/object" + "github.com/casbin/casdoor/original" "github.com/casbin/casdoor/proxy" "github.com/casbin/casdoor/routers" @@ -34,6 +35,10 @@ func main() { proxy.InitHttpClient() authz.InitAuthz() + if original.InitAdapter() { + go original.RunSyncUsersJob() + } + beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{ AllowOrigins: []string{"*"}, AllowMethods: []string{"GET", "PUT", "PATCH"}, diff --git a/original/adapter.go b/original/adapter.go index 79628ce0..7a2bfc41 100644 --- a/original/adapter.go +++ b/original/adapter.go @@ -28,18 +28,17 @@ func initConfig() { if err != nil { panic(err) } - - initAdapter() } -func initAdapter() { +func InitAdapter() bool { if dbName == "dbName" { adapter = nil - return + return false } adapter = object.NewAdapter(beego.AppConfig.String("driverName"), beego.AppConfig.String("dataSourceName"), dbName) createTable(adapter) + return true } func createTable(a *object.Adapter) { diff --git a/original/public_api.go b/original/public_api.go index 9439ac73..c781ea76 100644 --- a/original/public_api.go +++ b/original/public_api.go @@ -22,7 +22,7 @@ import ( func isEnabled() bool { if adapter == nil { - initAdapter() + InitAdapter() if adapter == nil { return false } diff --git a/original/user_original.go b/original/user_original.go index b96f26f2..53832969 100644 --- a/original/user_original.go +++ b/original/user_original.go @@ -17,6 +17,7 @@ package original import ( "strconv" "strings" + "time" "github.com/casbin/casdoor/util" ) @@ -77,3 +78,15 @@ func calculateHash(user *User) string { s := strings.Join([]string{strconv.Itoa(user.Id), user.Password, user.Name, getFullAvatarUrl(user.Avatar), user.Cellphone, strconv.Itoa(user.SchoolId)}, "|") return util.GetMd5Hash(s) } + +func RunSyncUsersJob() { + syncUsers() + + // run at every minute + schedule := "* * * * *" + err := ctab.AddJob(schedule, syncUsers) + if err != nil { + panic(err) + } + time.Sleep(time.Duration(1<<63 - 1)) +} diff --git a/original/user_original_test.go b/original/user_original_test.go index a79ef9a4..e8be0f0e 100644 --- a/original/user_original_test.go +++ b/original/user_original_test.go @@ -17,14 +17,13 @@ package original import ( "fmt" "testing" - "time" "github.com/casbin/casdoor/object" ) func TestGetUsers(t *testing.T) { initConfig() - initAdapter() + InitAdapter() users := getUsersOriginal() for _, user := range users { @@ -34,16 +33,8 @@ func TestGetUsers(t *testing.T) { func TestSyncUsers(t *testing.T) { initConfig() - initAdapter() + InitAdapter() object.InitAdapter() - syncUsers() - - // run at every minute - schedule := "* * * * *" - err := ctab.AddJob(schedule, syncUsers) - if err != nil { - panic(err) - } - time.Sleep(time.Duration(1<<63 - 1)) + RunSyncUsersJob() }