Папки шлюза по сети — два режима: простой (один логин) или через домен (группы и сотрудники bj)

- «Через домен»: сервер bj подключается к домену AD (winbind, один раз — учётной записью администратора домена, bj её не сохраняет); папки igate_exchange(_prod) открыты группам с ролью в bj и доменным сотрудникам bj — своим входом в Windows; краткое имя домена bj берёт из AD (crossRef nETBIOSName).
- Список доступа bj сверяет сам: после изменения групп, сотрудников и настроек входа (через несколько секунд) и раз в 15 минут.
- «Простой»: как было — один логин и пароль Samba; переход с домена выключает вход через домен (учётная запись компьютера в домене остаётся).
- bj-igate-admin share: режимы simple/domain, join (realm, workgroup, admin), проверка списка доступа на недопустимые символы, состояние — mode/joined/realm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-07 09:01:46 +03:00
parent 6aa5d60797
commit 9553bd6e22
8 changed files with 426 additions and 45 deletions
+3
View File
@@ -1366,6 +1366,7 @@ func (h *setupHandlers) saveUser(w http.ResponseWriter, r *http.Request) {
h.usersFlash(w, r, "Создан первый администратор "+u.Login+". Теперь вход обязателен — войдите под ним.")
return
}
igateShareSyncSoon(h.rc) // доменный сотрудник — и к папкам шлюза «через домен»
h.usersFlash(w, r, "Пользователь "+u.Login+" сохранён.")
}
@@ -1390,6 +1391,7 @@ func (h *setupHandlers) deleteUser(w http.ResponseWriter, r *http.Request) {
return
}
_ = globalUsers.Delete(login)
igateShareSyncSoon(h.rc)
globalSessions.DropUser(login)
h.usersFlash(w, r, "Пользователь "+login+" удалён.")
}
@@ -1445,6 +1447,7 @@ func (h *setupHandlers) saveAuth(w http.ResponseWriter, r *http.Request) {
h.usersFlash(w, r, "Вход: "+err.Error())
return
}
igateShareSyncSoon(h.rc)
h.usersFlash(w, r, "Настройки входа сохранены.")
}