alist/server/handles
千石 c64f899a63
feat: implement session management (#9286)
* feat(auth): Added device session management

- Added the `handleSession` function to manage user device sessions and verify client identity
- Updated `auth.go` to call `handleSession` for device handling when a user logs in
- Added the `Session` model to database migrations
- Added `device.go` and `session.go` files to handle device session logic
- Updated `settings.go` to add device-related configuration items, such as the maximum number of devices, device eviction policy, and session TTL

* feat(session): Adds session management features

- Added `SessionInactive` error type in `device.go`
- Added session-related APIs in `router.go` to support listing and evicting sessions
- Added `ListSessionsByUser`, `ListSessions`, and `MarkInactive` methods in `session.go`
- Returns an appropriate error when the session state is `SessionInactive`

* feat(auth): Marks the device session as invalid.

- Import the `session` package into the `auth` module to handle device session status.
- Add a check in the login logic. If `device_key` is obtained, call `session.MarkInactive` to mark the device session as invalid.
- Store the invalid status in the context variable `session_inactive` for subsequent middleware checks.
- Add a check in the session refresh logic to abort the process if the current session has been marked invalid.

* feat(auth, session): Added device information processing and session management changes

- Updated device handling logic in `auth.go` to pass user agent and IP information
- Adjusted database queries in `session.go` to optimize session query fields and add `user_agent` and `ip` fields
- Modified the `Handle` method to add `ua` and `ip` parameters to store the user agent and IP address
- Added the `SessionResp` structure to return a session response containing `user_agent` and `ip`
- Updated the `/admin/user/create` and `/webdav` endpoints to pass the user agent and IP address to the device handler
2025-08-25 19:46:38 +08:00
..
archive.go feat: enhance permission control and label management (#9215) 2025-07-26 09:51:59 +08:00
auth.go feat: implement session management (#9286) 2025-08-25 19:46:38 +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: implement session management (#9286) 2025-08-25 19:46:38 +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 feat: enhance permission control and label management (#9215) 2025-07-26 09:51:59 +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: add user registration endpoint and role-based default settings (#9277) 2025-08-18 16:38:21 +08:00
webauthn.go fix(webauthn): handle error when removing webauthn credential (#7689) 2024-12-25 21:16:34 +08:00