Bladeren bron

added nightlymanager

AY's Macbook Pro 3 jaren geleden
bovenliggende
commit
a3019dc2cd
3 gewijzigde bestanden met toevoegingen van 27 en 7 verwijderingen
  1. 1 1
      ldap.go
  2. 25 5
      mod/auth/ldap/ldap.go
  3. 1 1
      startup.go

+ 1 - 1
ldap.go

@@ -9,7 +9,7 @@ import (
 
 func ldapInit() {
 	//ldap
-	ldapHandler := ldap.NewLdapHandler(authAgent, registerHandler, sysdb, permissionHandler, userHandler, iconSystem)
+	ldapHandler := ldap.NewLdapHandler(authAgent, registerHandler, sysdb, permissionHandler, userHandler, nightlyManager, iconSystem)
 
 	//add a entry to the system settings
 	adminRouter := prout.NewModuleRouter(prout.RouterOption{

+ 25 - 5
mod/auth/ldap/ldap.go

@@ -15,6 +15,7 @@ import (
 	"imuslab.com/arozos/mod/common"
 	db "imuslab.com/arozos/mod/database"
 	permission "imuslab.com/arozos/mod/permission"
+	"imuslab.com/arozos/mod/time/nightly"
 	"imuslab.com/arozos/mod/user"
 )
 
@@ -27,6 +28,7 @@ type ldapHandler struct {
 	userHandler       *user.UserHandler
 	iconSystem        string
 	syncdb            *syncdb.SyncDB
+	nightlyManager    *nightly.TaskManager
 }
 
 type Config struct {
@@ -51,7 +53,7 @@ type syncorizeUserReturnInterface struct {
 }
 
 //NewLdapHandler xxx
-func NewLdapHandler(authAgent *auth.AuthAgent, register *reg.RegisterHandler, coreDb *db.Database, permissionHandler *permission.PermissionHandler, userHandler *user.UserHandler, iconSystem string) *ldapHandler {
+func NewLdapHandler(authAgent *auth.AuthAgent, register *reg.RegisterHandler, coreDb *db.Database, permissionHandler *permission.PermissionHandler, userHandler *user.UserHandler, nightlyManager *nightly.TaskManager, iconSystem string) *ldapHandler {
 	//ldap handler init
 	log.Println("Starting LDAP client...")
 	err := coreDb.NewTable("ldap")
@@ -75,8 +77,11 @@ func NewLdapHandler(authAgent *auth.AuthAgent, register *reg.RegisterHandler, co
 		userHandler:       userHandler,
 		iconSystem:        iconSystem,
 		syncdb:            syncdb.NewSyncDB(),
+		nightlyManager:    nightlyManager,
 	}
 
+	nightlyManager.RegisterNightlyTask(LDAPHandler.NightlySync)
+
 	return &LDAPHandler
 }
 
@@ -291,9 +296,25 @@ func (ldap *ldapHandler) SynchronizeUser(w http.ResponseWriter, r *http.Request)
 		return
 	}
 
-	ldapUsersList, err := ldap.getAllUser(-1)
+	err := ldap.SynchronizeUserFromLDAP()
 	if err != nil {
 		common.SendErrorResponse(w, err.Error())
+		return
+	}
+	common.SendOK(w)
+}
+
+func (ldap *ldapHandler) NightlySync() {
+	err := ldap.SynchronizeUserFromLDAP()
+	log.Println(err)
+}
+
+func (ldap *ldapHandler) SynchronizeUserFromLDAP() error {
+	//check if suer is admin before executing the command
+	//if user is admin then check if user will lost him/her's admin access
+	ldapUsersList, err := ldap.getAllUser(-1)
+	if err != nil {
+		return err
 	}
 	for _, ldapUser := range ldapUsersList {
 		//check if user exist in system
@@ -302,15 +323,14 @@ func (ldap *ldapHandler) SynchronizeUser(w http.ResponseWriter, r *http.Request)
 			//Get the permission groups by their ids
 			userinfo, err := ldap.userHandler.GetUserInfoFromUsername(ldapUser.Username)
 			if err != nil {
-				common.SendErrorResponse(w, "Error while getting user info")
-				return
+				return err
 			}
 			newPermissionGroups := ldap.permissionHandler.GetPermissionGroupByNameList(ldapUser.EquivGroup)
 			//Set the user's permission to these groups
 			userinfo.SetUserPermissionGroup(newPermissionGroups)
 		}
 	}
-	common.SendOK(w)
+	return nil
 }
 
 //LOGIN related function

+ 1 - 1
startup.go

@@ -43,7 +43,6 @@ func RunStartup() {
 	permissionInit()        //Register permission interface after user
 	RegisterSystemInit()    //See register.go
 	OAuthInit()             //Oauth system init
-	ldapInit()              //LDAP system init
 	GroupStoragePoolInit()  //Register permission groups's storage pool, require permissionInit()
 	BridgeStoragePoolInit() //Register the bridged storage pool based on mounted storage pools
 
@@ -89,6 +88,7 @@ func RunStartup() {
 	mediaServer_init()
 	security_init()
 	backup_init()
+	ldapInit() //LDAP system init
 
 	//Start High Level Services that requires full arozos architectures
 	FTPServerInit() //Start FTP Server Endpoints