Skip to content

Commit 9526e16

Browse files
authored
Merge pull request #12 from vapor/template
only set session if id not equal
2 parents 2f0d299 + 694e808 commit 9526e16

File tree

3 files changed

+9
-17
lines changed

3 files changed

+9
-17
lines changed

Sources/AuthProvider/SessionPersistable.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ private let sessionEntityId = "session-entity-id"
1515

1616
extension SessionPersistable where Self: Entity {
1717
public func persist(for req: Request) throws {
18-
try req.assertSession().data.set(sessionEntityId, id)
18+
let session = try req.assertSession()
19+
if session.data[sessionEntityId]?.wrapped != id?.wrapped {
20+
try req.assertSession().data.set(sessionEntityId, id)
21+
}
1922
}
2023

2124
public func unpersist(for req: Request) throws {

Tests/AuthProviderTests/TokenTests.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@ class TokenTests: XCTestCase {
1212
let memory = try! MemoryDriver()
1313
let database = Database(memory)
1414

15-
database.log = { query in
16-
print(query)
17-
}
18-
1915
TestToken.database = database
2016
TestUser.database = database
2117

@@ -80,6 +76,7 @@ extension TokenTests {
8076
// After that, the cookie can act as a login persister
8177

8278
import Sessions
79+
import Cookies
8380

8481
extension TokenTests {
8582

@@ -96,7 +93,7 @@ extension TokenTests {
9693
}, name: "persist")
9794

9895
config.addConfigurable(middleware: { config in
99-
TokenAuthenticationMiddleware(TestUser.self)
96+
return TokenAuthenticationMiddleware(TestUser.self)
10097
}, name: "token")
10198

10299
let drop = try Droplet(config)
@@ -124,8 +121,9 @@ extension TokenTests {
124121
let req2 = Request(.get, "name")
125122
req2.cookies["vapor-session"] = cookie
126123
let res2 = try drop.respond(to: req2)
124+
XCTAssertEqual(res2.cookies.array.count, 0)
127125

128-
XCTAssertEqual(res2.body.bytes?.makeString(), cookie)
126+
XCTAssertEqual(res2.body.bytes?.makeString(), "Bob")
129127
}
130128
}
131129

Tests/AuthProviderTests/Utilities/TestUser.swift

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,4 @@ extension Request {
5757

5858
// MARK: Sessions
5959

60-
extension TestUser: SessionPersistable {
61-
public static func fetchPersisted(for req: Request) throws -> Self? {
62-
// take the cookie and set it as the user's
63-
// name for easy verification
64-
guard let cookie = req.cookies["vapor-session"] else {
65-
return nil
66-
}
67-
return self.init(name: cookie)
68-
}
69-
}
60+
extension TestUser: SessionPersistable {}

0 commit comments

Comments
 (0)