Skip to content

Commit 85f1274

Browse files
author
Peter Marton
committed
feat(getByUserId): implement
1 parent 585eee5 commit 85f1274

File tree

3 files changed

+65
-1
lines changed

3 files changed

+65
-1
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ session.cleanup(true).then(function () { ... })
7474

7575
### Get user's sessions
7676

77-
// TODO
77+
```javascript
78+
session.getByUserId('1').then(function (sessions) { ... })
79+
```
7880

7981
### Destroy user's sessions
8082

src/e2e.spec.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ describe('e2e', () => {
104104
})
105105
})
106106

107+
afterEach(function *() {
108+
yield thorken.destroy(token)
109+
})
110+
107111
it('should return with session', function *() {
108112
var props = yield thorken.get(token)
109113

@@ -153,6 +157,45 @@ describe('e2e', () => {
153157
})
154158
})
155159

160+
describe('#getByUserId', () => {
161+
var token1
162+
var token2
163+
164+
beforeEach(function *() {
165+
var result = yield {
166+
token1: thorken.create({
167+
uid: '1',
168+
ip: '192.168.1.1'
169+
}),
170+
171+
token2: thorken.create({
172+
uid: '1',
173+
ip: '192.168.1.2'
174+
})
175+
}
176+
177+
token1 = result.token1
178+
token2 = result.token2
179+
})
180+
181+
afterEach(function *() {
182+
yield [thorken.destroy(token1), thorken.destroy(token2)]
183+
})
184+
185+
it('should return with user\'s sessions', function *() {
186+
var sessions1 = yield thorken.getByUserId('1')
187+
var sessions2 = yield thorken.getByUserId('2')
188+
189+
expect(sessions1.length).to.be.equal(2)
190+
expect(sessions1[0]).property('uid', '1')
191+
expect(sessions1[0]).property('ip')
192+
expect(sessions1[1]).property('uid', '1')
193+
expect(sessions1[1]).property('ip')
194+
195+
expect(sessions2.length).to.be.equal(0)
196+
})
197+
})
198+
156199
describe('#destroy', () => {
157200
var token
158201

src/thorken.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,25 @@ Thorken.prototype.get = function (token) {
148148
})
149149
}
150150

151+
/**
152+
* Get sessions by user id
153+
* @method getByUserId
154+
*/
155+
Thorken.prototype.getByUserId = function (userId) {
156+
var _this = this
157+
var userKey = _this.namespaceKey + PREFIX.USER + userId
158+
159+
return _this.redis.smembers(userKey)
160+
.then(function (tokens) {
161+
var hgetTokens = tokens.map(function (token) {
162+
var tokenKey = _this.namespaceKey + PREFIX.TOKEN + token
163+
return _this.redis.hgetall(tokenKey)
164+
})
165+
166+
return Promise.all(hgetTokens)
167+
})
168+
}
169+
151170
/**
152171
* Extend token's expiration
153172
* @method extend

0 commit comments

Comments
 (0)