Sha256: 51184987fea7286dc7094491044ca60028d163d7c3f6e7378e71cd4401a08a89
Contents?: true
Size: 958 Bytes
Versions: 5
Compression:
Stored size: 958 Bytes
Contents
description 'Persistent login' class ::Olelo::Application TOKEN_NAME = 'olelo.token' TOKEN_LIFETIME = 24*60*60*365 hook :auto_login do if !User.current token = request.cookies[TOKEN_NAME] if token hash, user = token.split('-', 2) User.current = User.find(user) if sha256(user + Config['rack.session_secret']) == hash end end end before :login_buttons do %{<input type="checkbox" name="persistent" id="persistent" value="1"/> <label for="persistent">#{escape_html :persistent_login.t}</label><br/>} end after :action do |method, path| if path == '/login' if User.logged_in? && params[:persistent] token = "#{sha256(User.current.name + Config['rack.session_secret'])}-#{User.current.name}" response.set_cookie(TOKEN_NAME, value: token, expires: Time.now + TOKEN_LIFETIME) end elsif path == '/logout' response.delete_cookie(TOKEN_NAME) end end end
Version data entries
5 entries across 5 versions & 1 rubygems