alist/pkg
千石 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
..
aria2/rpc fix(local): filename with whitespace issue (#3928) 2023-03-23 15:18:37 +08:00
chanio feat: add support for mega.nz (close 1553) 2022-10-08 22:16:41 +08:00
cookie feat: add quark driver 2022-09-02 21:36:47 +08:00
cron fix: send on closed channel 2022-09-14 15:13:02 +08:00
errgroup feat: upload progress recovery (#4987) 2023-08-11 14:23:30 +08:00
generic feat: optimize index build 2022-12-05 16:07:36 +08:00
generic_sync fix(search): don't delete virtual folder while update indexes (close #2677) 2022-12-11 14:59:58 +08:00
gowebdav perf: use io copy with buffer pool (#6389) 2024-04-25 20:11:15 +08:00
http_range fix(crypt): fix 139cloud hack (#5178) 2023-09-06 14:12:01 +08:00
mq fix(search): BuildIndex concurrency error (#7035) 2024-08-22 00:44:55 +08:00
qbittorrent feat: refactor offline download (#5408 close #4108) 2023-11-06 16:56:55 +08:00
sign feat: sign of file 2022-06-28 15:12:40 +08:00
singleflight feat: use singleflight to prevent cache breakdown 2022-06-13 20:24:13 +08:00
task feat: refactor offline download (#5408 close #4108) 2023-11-06 16:56:55 +08:00
utils feat: implement session management (#9286) 2025-08-25 19:46:38 +08:00