move to stores
This commit is contained in:
		
							
								
								
									
										21
									
								
								redisstore/LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								redisstore/LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2016 Gin-Gonic | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
							
								
								
									
										72
									
								
								redisstore/redis.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								redisstore/redis.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| package redisstore | ||||
|  | ||||
| import ( | ||||
| 	"github.com/boj/redistore" | ||||
| 	ginsessions "github.com/dalu/sessions" | ||||
| 	"github.com/garyburd/redigo/redis" | ||||
| 	"github.com/gorilla/sessions" | ||||
| ) | ||||
|  | ||||
| // RedisStore interface | ||||
| type RedisStore interface { | ||||
| 	ginsessions.Store | ||||
| } | ||||
|  | ||||
| // NewRedisStore creates a new Redis Store | ||||
| // size: maximum number of idle connections. | ||||
| // network: tcp or udp | ||||
| // address: host:port | ||||
| // password: redis-password | ||||
| // Keys are defined in pairs to allow key rotation, but the common case is to set a single | ||||
| // authentication key and optionally an encryption key. | ||||
| // | ||||
| // The first key in a pair is used for authentication and the second for encryption. The | ||||
| // encryption key can be set to nil or omitted in the last pair, but the authentication key | ||||
| // is required in all pairs. | ||||
| // | ||||
| // It is recommended to use an authentication key with 32 or 64 bytes. The encryption key, | ||||
| // if set, must be either 16, 24, or 32 bytes to select AES-128, AES-192, or AES-256 modes. | ||||
| func NewRedisStore(size int, network, address, password string, keyPairs ...[]byte) (RedisStore, error) { | ||||
| 	store, err := redistore.NewRediStore(size, network, address, password, keyPairs...) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return &redisStore{store}, nil | ||||
| } | ||||
|  | ||||
| // NewRedisStoreWithDB - like NewRedisStore but accepts `DB` parameter to select | ||||
| // redis DB instead of using the default one ("0") | ||||
| // | ||||
| // Ref: https://godoc.org/github.com/boj/redistore#NewRediStoreWithDB | ||||
| func NewRedisStoreWithDB(size int, network, address, password, DB string, keyPairs ...[]byte) (RedisStore, error) { | ||||
| 	store, err := redistore.NewRediStoreWithDB(size, network, address, password, DB, keyPairs...) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return &redisStore{store}, nil | ||||
| } | ||||
|  | ||||
| // NewRedisStoreWithPool instantiates a RediStore with a *redis.Pool passed in. | ||||
| // | ||||
| // Ref: https://godoc.org/github.com/boj/redistore#NewRediStoreWithPool | ||||
| func NewRedisStoreWithPool(pool *redis.Pool, keyPairs ...[]byte) (RedisStore, error) { | ||||
| 	store, err := redistore.NewRediStoreWithPool(pool, keyPairs...) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return &redisStore{store}, nil | ||||
| } | ||||
|  | ||||
| type redisStore struct { | ||||
| 	*redistore.RediStore | ||||
| } | ||||
|  | ||||
| func (c *redisStore) Options(options ginsessions.Options) { | ||||
| 	c.RediStore.Options = &sessions.Options{ | ||||
| 		Path:     options.Path, | ||||
| 		Domain:   options.Domain, | ||||
| 		MaxAge:   options.MaxAge, | ||||
| 		Secure:   options.Secure, | ||||
| 		HttpOnly: options.HTTPOnly, | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Darko Luketic
					Darko Luketic