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