{"number":17,"pull_request":{"number":17,"issue_url":"https://github.com/snapframework/snap/issues/17","head":{"repo":{"master_branch":null,"name":"snap","created_at":"2011-10-19T17:42:28Z","size":120,"clone_url":"https://github.com/veinor/snap.git","private":false,"updated_at":"2011-10-19T20:09:13Z","watchers":1,"ssh_url":"git@github.com:veinor/snap.git","url":"https://api.github.com/repos/veinor/snap","git_url":"git://github.com/veinor/snap.git","language":"Haskell","fork":true,"svn_url":"https://svn.github.com/veinor/snap","id":2607795,"pushed_at":"2011-10-19T20:09:13Z","open_issues":0,"homepage":"http://snapframework.com/","description":"Snap project starter executable plus some libraries for building web apps","forks":0,"html_url":"https://github.com/veinor/snap","owner":{"avatar_url":"https://secure.gravatar.com/avatar/1faa4ff8102f4ff19acaf78454c66c55?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"1faa4ff8102f4ff19acaf78454c66c55","url":"https://api.github.com/users/veinor","id":34805,"login":"veinor"}},"label":"veinor:withBackend","sha":"2f03ddc59101205622b29e608c3cbd7476630689","ref":"withBackend","user":{"avatar_url":"https://secure.gravatar.com/avatar/1faa4ff8102f4ff19acaf78454c66c55?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"1faa4ff8102f4ff19acaf78454c66c55","url":"https://api.github.com/users/veinor","id":34805,"login":"veinor"}},"merged_by":{"avatar_url":"https://secure.gravatar.com/avatar/1a149f7f159606ab4cf97a344cc903dd?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"1a149f7f159606ab4cf97a344cc903dd","url":"https://api.github.com/users/ozataman","id":13820,"login":"ozataman"},"created_at":"2011-10-19T20:10:24Z","changed_files":2,"merged":true,"body":"Instead of pattern-matching against the AuthManager ctor, we can use a `withBackend :: (forall r. (IAuthBackend r) => r -> Handler b (AuthManager v) a) -> Handler b (AuthManager v) a`. The handlers in Snap.Snaplet.Auth.Handlers have been rewritten to use this.\r\n\r\nThis also adds a usernameExists function.","comments":0,"title":"Use existential types to run AuthManager handlers with the auth backend","additions":68,"diff_url":"https://github.com/snapframework/snap/pull/17.diff","updated_at":"2011-10-26T22:13:57Z","_links":{"html":{"_href":"https://github.com/snapframework/snap/pull/17"},"self":{"_href":"https://api.github.com/repos/snapframework/snap/pulls/17"},"comments":{"_href":"https://api.github.com/repos/snapframework/snap/issues/17/comments"},"review_comments":{"_href":"https://api.github.com/repos/snapframework/snap/pulls/17/comments"}},"url":"https://api.github.com/repos/snapframework/snap/pulls/17","id":416440,"patch_url":"https://github.com/snapframework/snap/pull/17.patch","mergeable":null,"merged_at":"2011-10-26T22:13:57Z","commits":2,"closed_at":"2011-10-26T22:13:57Z","user":{"avatar_url":"https://secure.gravatar.com/avatar/1faa4ff8102f4ff19acaf78454c66c55?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"1faa4ff8102f4ff19acaf78454c66c55","url":"https://api.github.com/users/veinor","id":34805,"login":"veinor"},"deletions":44,"html_url":"https://github.com/snapframework/snap/pull/17","review_comments":0,"base":{"repo":{"master_branch":null,"name":"snap","created_at":"2010-07-03T18:14:08Z","size":228,"clone_url":"https://github.com/snapframework/snap.git","private":false,"updated_at":"2011-10-26T22:13:56Z","watchers":86,"ssh_url":"git@github.com:snapframework/snap.git","url":"https://api.github.com/repos/snapframework/snap","git_url":"git://github.com/snapframework/snap.git","language":"Haskell","fork":false,"svn_url":"https://svn.github.com/snapframework/snap","id":755385,"pushed_at":"2011-10-26T22:13:56Z","open_issues":0,"homepage":"http://snapframework.com/","description":"Snap project starter executable plus some libraries for building web apps","forks":19,"html_url":"https://github.com/snapframework/snap","owner":{"avatar_url":"https://secure.gravatar.com/avatar/f4939a75d898670f6f7f1147792ec008?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","gravatar_id":"f4939a75d898670f6f7f1147792ec008","url":"https://api.github.com/users/snapframework","id":246987,"login":"snapframework"}},"label":"snapframework:master","sha":"8ba2b3b9627f82718732c8e8a05eb5fe4f434eed","ref":"master","user":{"avatar_url":"https://secure.gravatar.com/avatar/f4939a75d898670f6f7f1147792ec008?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","gravatar_id":"f4939a75d898670f6f7f1147792ec008","url":"https://api.github.com/users/snapframework","id":246987,"login":"snapframework"}},"state":"closed"},"action":"closed"}