Skip to content

Commit b31c930

Browse files
committed
Enhance README.md with detailed session usage examples, including user login and logout functionality
1 parent fac5c18 commit b31c930

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

README.md

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ shards install
3131

3232
## 🚀 Quick Start
3333

34-
### 1. Basic Session Usage
34+
### 1. Basic Session Usage (User Login / Logout)
3535

3636
```crystal
3737
require "kemal"
@@ -40,28 +40,32 @@ require "kemal-session"
4040
# Session Configuration
4141
Kemal::Session.config.secret = "my-secret-key"
4242
43-
# Store data in session
44-
get "/login" do |env|
45-
env.session.string("username", "alice")
46-
env.session.int("user_id", 123)
47-
"Welcome! You're now logged in."
43+
# User login (create session)
44+
post "/login" do |env|
45+
username = env.params.body["username"]?.to_s
46+
47+
# In a real app you would authenticate here
48+
env.session.string("username", username)
49+
env.session.bool("logged_in", true)
50+
51+
"Welcome #{username}, you're now logged in."
4852
end
4953
50-
# Retrieve data from session
54+
# Protected route using session
5155
get "/profile" do |env|
56+
unless env.session.bool?("logged_in")
57+
env.response.status_code = 401
58+
next "Please log in first"
59+
end
60+
5261
username = env.session.string("username")
53-
user_id = env.session.int("user_id")
54-
55-
"Hello #{username}! Your ID is #{user_id}"
62+
"Hello #{username}!"
5663
end
5764
58-
# Optional values (returns nil if not found)
59-
get "/dashboard" do |env|
60-
last_visit = env.session.string?("last_visit")
61-
message = last_visit ? "Welcome back! Last visit: #{last_visit}" : "First time here!"
62-
63-
env.session.string("last_visit", Time.utc.to_s)
64-
message
65+
# User logout (destroy session)
66+
post "/logout" do |env|
67+
env.session.destroy
68+
"You have been logged out."
6569
end
6670
6771
Kemal.run

0 commit comments

Comments
 (0)