alist/server/handles
千石 eb4c35db75
feat(device/session): per-user max devices & TTL, WebDAV reactivation, admin clean/list APIs (#9315)
* feat(auth): Improved device session management logic

- Replaced the `userID` parameter with the `user` object to support operations with more user attributes.
- Introduced `SessionTTL` and `MaxDevices` properties in the `Handle` and `EnsureActiveOnLogin` functions to support user-defined settings.
- Adjusted the session creation and verification logic in `session.go` to support user-defined device count and session duration.
- Added help documentation in `setting.go` to explain the configuration purposes of `MaxDevices` and `DeviceSessionTTL`.
- Added optional `MaxDevices` and `SessionTTL` properties to the user entity in `user.go` and persisted these settings across user updates.
- Modified the device handling logic in `webdav.go` to adapt to the new user object parameters.

* feat(session): Added session cleanup functionality

- Added the `/clean` route to the route for session cleanup
- Added the `DeleteInactiveSessions` method to support deleting inactive sessions by user ID
- Added the `DeleteSessionByID` method to delete a specific session by session ID
- Defined the `CleanSessionsReq` request structure to support passing a user ID or session ID
- Implemented the `CleanSessions` interface logic to perform corresponding session cleanup operations based on the request parameters

* feat(session): Added session list functionality with usernames

- Added the `SessionWithUser` structure, which includes `Session` and `Username` fields.
- Added the `ListSessionsWithUser` function, which queries and returns a list of sessions with usernames.
- Used a `JOIN` operation to join the session and user tables to retrieve the username associated with each session.
- Changed `ListSessions` to `ListSessionsWithUser` to ensure that the username is retrieved.

* feat(webdav): Enhanced WebDAV authentication logic

- Added logic for generating device keys based on the Client-Id, prioritizing those obtained from the request header.
- If the Client-Id is missing, attempts to obtain it from the cookie. If that still doesn't exist, generates a random suffix for the client IP address as an identifier.
- Stores the generated Client-Id in a cookie to ensure consistency across subsequent requests.
- Use the device.EnsureActiveOnLogin method instead of the original Handle method to reactivate inactive sessions.
2025-09-11 11:27:07 +08:00
..
archive.go feat: enhance permission control and label management (#9215) 2025-07-26 09:51:59 +08:00
auth.go feat(device/session): per-user max devices & TTL, WebDAV reactivation, admin clean/list APIs (#9315) 2025-09-11 11:27:07 +08:00
const.go feat(recursive-move): Advanced conflict policy for preventing unintentional overwriting (#7906) 2025-02-09 18:32:57 +08:00
down.go fix(net): unexpected write (#8291 close #8281) 2025-04-12 17:01:52 +08:00
driver.go style: shorten name `operations` to `op` 2022-08-31 21:01:15 +08:00
fsbatch.go feat: enhance permission control and label management (#9215) 2025-07-26 09:51:59 +08:00
fsmanage.go feat: enhance permission control and label management (#9215) 2025-07-26 09:51:59 +08:00
fsread.go fix: webdav error location (#9266) 2025-08-15 23:10:55 +08:00
fsup.go perf: optimize IO read/write usage (#8243) 2025-04-12 16:55:31 +08:00
helper.go fix: reflected XSS vulnerability plist api 2023-11-24 16:46:48 +08:00
index.go fix(search): BuildIndex concurrency error (#7035) 2024-08-22 00:44:55 +08:00
label.go feat: enhance permission control and label management (#9215) 2025-07-26 09:51:59 +08:00
label_file_binding.go feat: add tag backup and fix bugs (#9265) 2025-08-15 23:09:00 +08:00
ldap_login.go feat: enhance permission control and label management (#9215) 2025-07-26 09:51:59 +08:00
meta.go fix: some missing regexp lib modified 2024-01-01 18:44:59 +08:00
offline_download.go feat: enhance permission control and label management (#9215) 2025-07-26 09:51:59 +08:00
role.go feat: add user registration endpoint and role-based default settings (#9277) 2025-08-18 16:38:21 +08:00
search.go feat(search): Optimized search result filtering and paging logic (#9287) 2025-08-25 19:46:24 +08:00
session.go feat(device/session): per-user max devices & TTL, WebDAV reactivation, admin clean/list APIs (#9315) 2025-09-11 11:27:07 +08:00
setting.go fix: ensure DefaultRole stores role ID while exposing role name in APIs (#9279) 2025-08-19 15:01:32 +08:00
sshkey.go fix(sftp-server): postgre cannot store control characters (#8188 close #8186) 2025-03-27 23:14:36 +08:00
ssologin.go fix(ssologin): missing role in SSO auto-registration and minor callback issue (#9305) 2025-09-04 22:15:39 +08:00
storage.go feat: batch reload all storages (close #2762 pr #2775) 2022-12-21 19:21:18 +08:00
task.go feat: enhance permission control and label management (#9215) 2025-07-26 09:51:59 +08:00
user.go feat(device/session): per-user max devices & TTL, WebDAV reactivation, admin clean/list APIs (#9315) 2025-09-11 11:27:07 +08:00
webauthn.go fix(webauthn): handle error when removing webauthn credential (#7689) 2024-12-25 21:16:34 +08:00