Into Fire (Server ver.) #111 #112
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue: #111
FIX
Implemented password-based authentication on the WebSocket server using bcryptjs hashing.
The fix verifies existing users, rejects incorrect credentials, enforces single active session per user, and introduces an explicit authentication-ready signal to prevent first-message loss.
The client now sends the password after the username and waits for
[[AUTH_OK]]before enabling input.Relevant documentation has been updated accordingly.
Summary
Server-side authentication
Password storage
Existing users
Single-session enforcement
First-message reliability
[[AUTH_OK]]signal after all handlers are attached.Documentation
Changes
server.js
[[AUTH_OK]]after successful authenticationUser.js
passwordHashfield (required)package.json
bcryptjsdependencychat.go
[[AUTH_OK]]before enabling inputdocumentation.md
Verification
A video is attached demonstrating:
echo.terminal.3.1.mp4
Run Instructions
Server
MONGODB_URIis set in.envcd server npm install npm run devClient
Notes
Legacy user migration
passwordHash, it is automatically set on the first successful login.Error handling
ERROR: ...WebSocket frames for clear client-side display.