diff --git a/genny/auth/auth.go b/genny/auth/auth.go index 5cf69a7..e13ec92 100644 --- a/genny/auth/auth.go +++ b/genny/auth/auth.go @@ -75,14 +75,24 @@ func New(args []string) (*genny.Generator, error) { gf, err = gogen.AddInsideBlock( gf, `if app == nil {`, + `//AuthMiddlewares`, `app.Use(SetCurrentUser)`, `app.Use(Authorize)`, - `app.GET("/users/new", UsersNew)`, - `app.POST("/users", UsersCreate)`, - `app.GET("/signin", AuthNew)`, - `app.POST("/signin", AuthCreate)`, - `app.DELETE("/signout", AuthDestroy)`, - `app.Middleware.Skip(Authorize, HomeHandler, UsersNew, UsersCreate, AuthNew, AuthCreate)`, + ``, + `//Routes for Auth`, + `auth := app.Group("/auth")`, + `auth.GET("/", AuthLanding)`, + `auth.GET("/new", AuthNew)`, + `auth.POST("/", AuthCreate)`, + `auth.DELETE("/", AuthDestroy)`, + `auth.Middleware.Skip(Authorize, AuthLanding, AuthNew, AuthCreate)`, + ``, + `//Routes for User registration`, + `users := app.Group("/users")`, + `users.GET("/new", UsersNew)`, + `users.POST("/", UsersCreate)`, + `users.Middleware.Remove(Authorize)`, + ``, ) return r.File(gf) diff --git a/genny/auth/templates/actions/auth.go.plush b/genny/auth/templates/actions/auth.go.plush index 83380f5..c468e00 100644 --- a/genny/auth/templates/actions/auth.go.plush +++ b/genny/auth/templates/actions/auth.go.plush @@ -13,6 +13,11 @@ import ( "golang.org/x/crypto/bcrypt" ) +// AuthLanding shows a landing page to login +func AuthLanding(c buffalo.Context) error { + return c.Render(200, r.HTML("auth/landing.plush.html")) +} + // AuthNew loads the signin page func AuthNew(c buffalo.Context) error { c.Set("user", models.User{}) @@ -33,11 +38,13 @@ func AuthCreate(c buffalo.Context) error { // helper function to handle bad attempts bad := func() error { - c.Set("user", u) verrs := validate.NewErrors() verrs.Add("email", "invalid email/password") + c.Set("errors", verrs) - return c.Render(422, r.HTML("auth/new.plush.html")) + c.Set("user", u) + + return c.Render(http.StatusUnauthorized, r.HTML("auth/new.plush.html")) } if err != nil { @@ -57,7 +64,7 @@ func AuthCreate(c buffalo.Context) error { c.Flash().Add("success", "Welcome Back to Buffalo!") redirectURL := "/" - if redir, ok := c.Session().Get("redirectURL").(string); ok { + if redir, ok := c.Session().Get("redirectURL").(string); ok && redir != "" { redirectURL = redir } diff --git a/genny/auth/templates/actions/auth_test.go.plush b/genny/auth/templates/actions/auth_test.go.plush index fdb711c..9c24de7 100644 --- a/genny/auth/templates/actions/auth_test.go.plush +++ b/genny/auth/templates/actions/auth_test.go.plush @@ -4,66 +4,92 @@ import ( "<%= app.PackagePkg %>/models" ) -func (as *ActionSuite) Test_Auth_New() { - res := as.HTML("/signin").Get() - as.Equal(200, res.Code) - as.Contains(res.Body.String(), "Sign In") -} - -func (as *ActionSuite) Test_Auth_Create() { +func (as *ActionSuite) createUser() (*models.User, error) { u := &models.User{ Email: "mark@example.com", Password: "password", PasswordConfirmation: "password", } + verrs, err := u.Create(as.DB) - as.NoError(err) as.False(verrs.HasAny()) - res := as.HTML("/signin").Post(u) - as.Equal(302, res.Code) - as.Equal("/", res.Location()) + return u, err } -func (as *ActionSuite) Test_Auth_Create_Redirect() { - u := &models.User{ - Email: "mark@example.com", - Password: "password", - PasswordConfirmation: "password", - } - verrs, err := u.Create(as.DB) - as.NoError(err) - as.False(verrs.HasAny()) +func (as *ActionSuite) Test_Auth_Signin() { + res := as.HTML("/auth/").Get() + as.Equal(200, res.Code) + as.Contains(res.Body.String(), `Sign In`) +} - as.Session.Set("redirectURL", "/some/url") +func (as *ActionSuite) Test_Auth_New() { + res := as.HTML("/auth/new").Get() + as.Equal(200, res.Code) + as.Contains(res.Body.String(), "Sign In") +} - res := as.HTML("/signin").Post(u) +func (as *ActionSuite) Test_Auth_SaveRedirect() { + res := as.HTML("/").Get() as.Equal(302, res.Code) - as.Equal(res.Location(), "/some/url") + + as.Equal("/auth", res.Location()) + as.Equal(as.Session.Get("redirectURL"), "/") } -func (as *ActionSuite) Test_Auth_Create_UnknownUser() { - u := &models.User{ - Email: "mark@example.com", - Password: "password", +func (as *ActionSuite) Test_Auth_Create() { + u, err := as.createUser() + as.NoError(err) + + tcases := []struct { + Email string + Password string + Status int + RedirectURL string + + Identifier string + }{ + {u.Email, u.Password, http.StatusFound, "/", "Valid"}, + {"noexist@example.com", "password", http.StatusUnauthorized, "", "Email Invalid"}, + {u.Email, "invalidPassword", http.StatusUnauthorized, "", "Password Invalid"}, } - res := as.HTML("/signin").Post(u) - as.Equal(422, res.Code) - as.Contains(res.Body.String(), "invalid email/password") -} -func (as *ActionSuite) Test_Auth_Create_BadPassword() { - u := &models.User{ - Email: "mark@example.com", - Password: "password", - PasswordConfirmation: "password", + for _, tcase := range tcases { + as.Run(tcase.Identifier, func() { + res := as.HTML("/auth").Post(&models.User{ + Email: tcase.Email, + Password: tcase.Password, + }) + + as.Equal(tcase.Status, res.Code) + as.Equal(tcase.RedirectURL, res.Location()) + }) } - verrs, err := u.Create(as.DB) +} + +func (as *ActionSuite) Test_Auth_Redirect() { + u, err := as.createUser() as.NoError(err) - as.False(verrs.HasAny()) - u.Password = "bad" - res := as.HTML("/signin").Post(u) - as.Equal(422, res.Code) - as.Contains(res.Body.String(), "invalid email/password") + tcases := []struct { + redirectURL interface{} + resultLocation string + + identifier string + }{ + {"/some/url", "/some/url", "RedirectURL defined"}, + {nil, "/", "RedirectURL nil"}, + {"", "/", "RedirectURL empty"}, + } + + for _, tcase := range tcases { + as.Run(tcase.identifier, func() { + as.Session.Set("redirectURL", tcase.redirectURL) + + res := as.HTML("/auth").Post(u) + + as.Equal(302, res.Code) + as.Equal(res.Location(), tcase.resultLocation) + }) + } } diff --git a/genny/auth/templates/actions/users.go.plush b/genny/auth/templates/actions/users.go.plush index 302de3a..6f88768 100644 --- a/genny/auth/templates/actions/users.go.plush +++ b/genny/auth/templates/actions/users.go.plush @@ -7,6 +7,7 @@ import ( "github.com/pkg/errors" ) +//UsersNew renders the users form func UsersNew(c buffalo.Context) error { u := models.User{} c.Set("user", u) diff --git a/genny/auth/templates/templates/index.html b/genny/auth/templates/templates/auth/landing.html similarity index 62% rename from genny/auth/templates/templates/index.html rename to genny/auth/templates/templates/auth/landing.html index 0275a47..ef41995 100644 --- a/genny/auth/templates/templates/index.html +++ b/genny/auth/templates/templates/auth/landing.html @@ -13,9 +13,10 @@
+ diff --git a/packrd/packed-packr.go b/packrd/packed-packr.go index 3c21ccb..00944e1 100644 --- a/packrd/packed-packr.go +++ b/packrd/packed-packr.go @@ -15,21 +15,21 @@ var _ = func() error { g := packr.New(gk, "") hgr, err := resolver.NewHexGzip(map[string]string{ "174f4d25dd06c181db983c02a4d113be": "1f8b08000000000000ff8c90418f9b301085effc8a291252228500ad7a710997aa87dea2aaf7950183bd02dbf20c4910e2bfaf8849365aed6af78478efcd37e397238d9d2802803d1f48c667c7ad156e0a0000a450ad2406599a46bfae4aadd0767c64d074e2e225dea956c78a448f0c2aa149386f3c0f48aa19e3ca68129a1ecd3978bb10f6b8601ae37abfbbe797f8ac6a920c7efc4cedba6c555e0fb2bcae956e19a4f07d4dbd0397d9d473d72a1d9786c8f4cc87e7204feeef0ff25a9da0ea38e2217c9c0e17f7d1bc5f7a7500729915ff44ab9084cb1399158197a3032ca9a7c6b8cd80c2ed60e21529a3192cbf78e42437db790b13449eb40eedff6a3bd07fde6ec23f3d575db8fd3870e48867e3ea7007138d563008ed4d9abf30f7dbe846b99e2f777dc6b8a1ca81c8e85b1d25692849c7385495400cef5d7ccb139f5c6b8a60f6ac3ca9d5a908fce7250000fffff0b9745682020000", - "2ccb48a08ad8e66f695827db5d1013cd": "1f8b08000000000000ffdc93df6adb4c10c5afb54f312ce463f5615621ed95a94b6dd76d0a6e30717c6da6d2c45d2cedaa33abb821e4dd8b2ca7d42ea436140ad1e5fcd1fcce39528df91a5704984717bc28e5aa3a7004a300f49bb301605ddb5937345bafe0ec6d5685824ad12a55eab6f1391814f87fb8dd9f372e520a372471396ce2d7e5156d4c0a0f2a6112e80f00c55ede7c9e1a9d895b79e7756a3f5234a94a50ece45b83a5b9383fef0193d87128a86b8c838fe8bc98b63c0ac5bd9d47767e65d21ee8b95b79f8e475aa1e8f001a3361a48ea96989feebe4d885103fa8249954e8ca3e1c3cba425ebfa3ef58d525d93c54baa7926486229bc0c5feb8ae77e5bd9971f0b78e2b6ca9fafb338f2ab92366e90131b74c8ddd61a2d8f7a3ce83ab30610e6c88b92b7cc052c86c17ed25cad0df9b3455cf393d0b124df3abd7afce2f0ebdee1a3ad35d631af22d72fbeee3fd5d5e53e198f2f8928d46b1731271c1db3945a379a779713dd53dd099848ab2864bfdd752d90fe4e0c609e92cfcda878d6f93382aa03f857268f229625f5ffc26f6d9dfddf93b2c5d01d4d2653f0f9fa47f84c513fc4bfe401bfb741206a0bf60a1ff59343f020000ffffdb75852067060000", + "2ccb48a08ad8e66f695827db5d1013cd": "1f8b08000000000000ffac54df6fdc360c7eb6fe0a414007b9f0e4a07b0b92606996ae01b2e2906bf6320ca96af32e426cc913a5a4d9e1fef741d2fd906fb9e0b0d56f2629f223f97d1c64f320e74065e394d14888ea07631de5845276f2e694ca61109314347998d33767756f5ae89091929099d70de512e9dbf3f87eea9583923616a4835b04cb4bcadfa60722fc5714ac35b6a40b52787a7c4a7fc89c0b521497bd54dd31ddf9582fedc3cff04df64307a2313dab48514c24e293b1ed389c0d2bf328e6c2e899b2bd0c288fc7314b428a47b01623b800ca8b8bd80197287e795f9242a2f8203b041ee3c44789e7fa999725218505e7ada63e3e26cbbd33f90ce8eecebdbbbf9baab9569ac71958c05050a2f8f8f9b76bce6ae9dd7dcd4af12b389e0a5ffee565c7df1d1d55d4028a0bd342725c18eda4d2c883f9bd699fc5d459a5e7bcace8971349ef2dcc4e598db11ca34d27114fd957a7e957a77f1caceaa57d6667010ebdd227b53cfb521ed4c027787a0dbd86a7ffdf005bc16287419aca47b881565968dc1e6c2f60fae9e85d8e29f3a45658f25e9b26f2262c7c1b22514c0151191df332bb2a7f7b73cd4203f581d057544b92d85050a2c85514eb7e3297413c1cac0d605d233135f9c79fe8ac6f1cdd2868a5058cf3cc6430324e9d741e53a4d28e14c5cdb6877518298aab16b453330576f376192a2dbc88c52aeac5ba4045ef9d1b444afdc178ddc6515494fd2e3bd5b26510e5826903df14bab1a47359e6696e755886b1ea6f08d942606af24a3f66493768984af6c9a1d936d3c91386b3303396de55344e3a0cda4a3d07ba1a7c18814471e3358f16b19d5345c3dad34e8b9765c24a3131e8f8ee01cc4f604a9bba8aaeedc54baecdd483771948516c099a4252d323e9fd2b265bfb0b8c0f898be5415c1e4bf07bb03953d58aa66067b281c5323ad1776e0d3663acdac75856a3e9a1f6b60b7b1ffde4dc6f61a634ac89a523a9eadd20adba359dd94b7ee807f7fc1fa9a4f650293b3ad3dda3b34a2e325b62c4abfcf33bacd9b989b96bcc8c6db97c09395ffe090000ffff0c718d2b5c080000", "2fd2eb8f500304442ead4bcba40063eb": "1f8b08000000000000ff8c51cb4ec33010bcef572c3ed955e5481c41bd8004b78204e2ee868d6bd5b12d67034151fe1dd9e5a11e785c6766673ce364da83b184f38c3a989ef4fd07b02c00ae4f31334a4014d6f17edce936f68d8dbbb1eb8c8f8da510dec48f74f2e3b0b7147e5198f6909b97f33f3c0428806e0c2d6ee955c6c403aeee12bb18068572559fa16f2950361cf31a29e79815ce8068f162834741b9550088ae2b8a42142bfd64bc7b364c525d56fc6c83c1f97a8d9889c71cd05653405c4e0dacbe8a93ac35aabf2843eee2b4357dd950ac5168dd7cad7be37c811ba63e79c33408f5bf50c496a71258f72851d731304d2cd591d30fc452943e625d6b15dceac76cc2d0c5dc53969fdf7102b63ca922fd8e0ccec302f01e0000ffff7aa1c8be1a020000", "45160bed1c4bb7bb4666d4b8a60abe27": "1f8b08000000000000ff74504f6b833014bffb29de04a1855a756397cc7adba1b7c2761fd14493a149489e6d45fceec3c66e32b653e0f7f7fd923b1c5a5e04007bdaa3882f961ac3ed180000082e1b8104b2348d5e6e0893ceb4742050b7fcea21daca46c51279e708545c21b79ef8ec1dca7a882bad902b5c9353f0bb10f66e8ea9b5ed7c7747aff1453214049e9e53b3942dc8cf4186322655432085c745f547b8c8c68eda46aab8d488ba235e3c0579b2ec0f7226cf50b5d4b943b8f686f3dfacc9ef3b6f0c402eb2e24d360a8e2a4f4456041e8d0e308b3e6a6d37bde3760723ad506a45604e90ea44516cb6d31646887cd2e2da1f95e9f19d369bf0b5a3b20db7ff0b4ed4b98bb62cdcc18883e104427387a6b5afec11b5ba6f285141892a767d5571e7c2fb80873cf1c2655a0493cfc81326cf45e09faf000000ffffcbdfdacd34020000", "5342f4924f2b8ea377a6a4ca790eb6ef": "1f8b08000000000000fff248cdc9c957482bcacf55a8ae56d0cb4bcc4dd50bc92cc949cdac4a55a8ade502040000ffff8a41cdb420000000", - "78adaa361902f6b3998e083a076a0160": "1f8b08000000000000ff8c54dd6edc3613bd169f624220df27150bca707b95745bd88ed314700dc34e6a14451170c95989588a54f8e35d23d8772f486a7fe2c049af0491873373ce9c99918b15ef10b808ca1a4f881a46eb02d4a4a29207bee01e5bff495352511f9c329da7840054a4a23fbf9c031f47765362dcac3a78f94b3b5889da277ca7421f174cd8a1edec222e975cdb76fa3e7b3fdaf1d9bb07ae95e4019f00c655d7a273d695ac5673d331ebba76d30af73806db2ef297928690b685b318fa6b5c83b65c7a083d82579d510646de2159462376905ac0949b5d581370131ac899e033a904bbc350d3e8d1d11914daec8347f779db90ca6188ce8060b76824bafaf4e464068ebd7bffc7554d790c7d6b70cd461d7dcffa3068da3464bb2fefc2210f083c041cc6e02158d0b6cbb5a67ca00cac55e8811bc08df241990eb810369ac00e0c4a946f9288f06a0efffba27852a96502a41bc1ce9591756c5ee7931773304aa7773b7e457776af427f17b858d5e85c43aa2d2155d894087f721db1a661431b56ff30da319561301bae21a46a5b582a2381176a9957228a03579a54532561c3ee7b7458d37c0e73f895ce60b2247b6fafec1a5dbdff776ab81bb9c03ab2cb846f9a86bd55ce873a4e397bd4233a4862a54a92c43d3752232cb8dc2b4faaf4f76a9e71f591704fda1f1b52550fe89c4fe09d51d935ae2fb342f5fe9e9d493991a033a0ca647061db8edcfbb5759236870c93b567909f3707edf7defae9f4f4bbdeca2d991a7bd4c672925a78c1a3c7dc3e98cfc17fd2ecd2b96b7b6bd73e239366c2462dcdffc3d430f3a4633e8ea3563891012ea543ef597a3c95bce0322bb1fd4f0eca19cd52b90142cf43ced1a9074c935a74828107d16399e29efb1ee5e16ee9ec902fe4a2d8680e6511b00b3b8cdce13beefb33236fa607f5dfff2c1e43b2ccee24019a197c759ef4fc5acb2f396ecb86f05e595337a595223a87267c4cb27d5432f986fdfea649c8b79afbbe6e8a3b7c14027dea39bd472dec8070cec52a79f4bc8cf20b9a6cec502a87227cb8bd4ab6a32dcd75e5e319d85519c04311bfa5228e1ea5892c23d3bc4ef0c2e210735e42956e1cb9ae20ea1f4f92ef0ef8e30df6067d70f6118446eea62d5bea006e64da667e37f13686c3ce9ade7d77f3ee285da4f8f53725fccb46e8f903c202d1a4cc1dca943469f81c2bdad2c4e6df000000ffff2c650f761f070000", + "78adaa361902f6b3998e083a076a0160": "1f8b08000000000000ff8c54ef6fdb3610fd2cfd155702cda4c1a082ee5b3b6f48d2741d900541d22c1886a1a0c9b344582255fe889d15f9df8b23e5d86d90b49f04f18ebcf7debdbb51c8956811840cda1a5f967a18ad0b50950553228885f0d8f84f3d2b0be683d3a6f5ac2c018ab260bfbe9c8318477e91dfb858b5f0f2b766b00a7b4ff9ad0e5d5c706987a6b58bb85c8ade36d3f7c9f868c72763b7a2d74a04fc26615cb50d3a675dae6a7b615a6e5ddb6c1ae9eec6609b45fab2b22ecba681a318ba336194362df8ceae3d08e8a7ff91c408167adb6a532ea391fbe99584090b3fb126e026d4902ac3e7b27018a23320f9251a85ae7a75783803c7df7ff8ebac622286ae998af0b18fbee35d187a56d7e5fd03a8735c436f85f2103a04af5ba34d42b403728eeb6741487e85a162d1a36333c8bde0d71edde7fbfa47201a5c3f09efc4a1080822041cc6e027991256aa07dac05a870e8401dc681f484f21a58d26f01d83fccab32422bc9ec3c157e0cb422f298122921f6ba3aa58bf49272fe660744ff7b6fcb219f88d0edd55107255a1737559dc97651136f985bf451fb16261c36a5efd3cda9160184c53509765d134b0d44681c8d4122f228a83d07d594c48c286df74e8b062e91ce6f03b9bc13427fc833db36b74d5c3bfd3c3d5282456919f527e5dd7fc9d763e5471aad9613fa203128b9090c49d30aa475808f5a07c59d0dfeb79caabf6842b6ed1394f91eda8f0735c9f2639aa7a1be7474a4d88d90c98362939536b46e1fdda3ac508d1d64ed374cd20ddaf7781c96709fe237775218cfc2a8810fdb5217759a7ff47f55dc7a5464dedde6b6e3ea1c69e88e8313515e673f09f7a7eeadcb9bda451a64c5252dad82bf35398da68bee9a38fe3d86b9c588350caa1f79c2e4f34164225c9ee7fc857a9a2596a3740e84448355a7d8b34bf59501844901de6d9ee84ef50ed624b678714508b6cae39e49dc54fec300a87ef85ef8e8cba982e54fffeb7b80b64a4ed0925d43378744e7a3ed6f26b8ef7796f78afada9eadc59199d43133e926c1fb5a226f33fdfd694f9ae17beabea6c231fa5444fde6037d84b3b201c0bb922e71ee7017f91ace4506987325c5f9e913f59c312ae743c03bbca63b903f10781d8bb44739a07a97e43e90707f92eb1626c22b52b31cfd1dc9c3d63e68cea97c35733d8cbdf5f736fd10767ef40f628dcb48a332c1046d1caf3dbb56063d82db6e9de77d7f396e109bd5f3dabe83f3642276e111688862ab7a8a82849fa142bd63062f3250000ffffde035115d9070000", "91d30953d7167b4a010b13c730a7f775": "1f8b08000000000000ff3cccb14e042110c6f19a798a0985010bb637b1b43d2d2eb617c4d95da20b38ccc618c2bb9bdd906be73fdfaff8f0e517c2d6d025bf917b1b87de01e256320b1a505aa84a4c8b06507a89b2ee1f2ee46daac22461e5e9ecf3dfc4f4b347260d1660de53c02b55b9bd168939d5dbbbff8e9f5ec8083e0ed15d2d36508c4fcf38c6ee42bf462c80ca45ea111e06d03a28e2f3f748eeee5950ec2ef98539b321660b1dfe030000ffff4d5ec109db000000", - "9f2cd2b558614a5c60040aab8da872b8": "1f8b08000000000000ffcc94cd6edc3610c7cfe2534c08a4208b0565a4b7a62ee0b8481dc02d02bb6ed05340532389b09654c861bc6de0772f486ad7f66e3e1af492d32e38dff3ff8d666d6ef480a00d59ef2263763dfb40201840c37f7a7a0c7a9ed5ebeaf5fa6680a73fb76bdfe114396bf860694cd7caf8753bf8ebd4f77af2edf2fb49fbece73ddb7c33b418820f9133c9589f9c81ab8821fe8eb7c2c012a84ebd23dc9084e20b1f5893e0c763a8eda81cf0e18e35465d22099e2206be8224591390527060d405ba0e83787674b482a0cefef8edbcfac5d6e1ad9aa7144735d27ae252b23bc6dab676711a501342c0c146c2104183c35bc891706b69041a31af69b246e72daa0713d4d82f0ff1ddde14b6cf0ed962d40beb3a91e4f3f2f2e4189c9d72dc76aeba39f5c6d27849dadc080c41b2e68eb1863635c39f7a4a28386db854e2fbd9cfb90d874573c99af718425c6d0b26b5344d1bb96be4abcada1e4a4a75a6e389fb5bc8127728ccf669d17e55a3e47d8daf93acd4ce2963b4de0959939b14023a7a9ba3deda2e9756af7e91d9f3e5a4e328a43ae93ac163320663ee82bfc1c9f83502797851657bc2257b045267031a123f1c3d5b016ff996974ba4d35a2f0b099a08d733c59ca9b7ae035da9b9d6113bf0ae90b3d7604e63ab25d64914bceac13b041ba1f7c9756029ff8f48bb1c95aa85bcc75d08871bdaf177a65d376190fb0f59a265be9ce3b3c4668193ed2a5bf7ebfef563eb96cf8beb037e3e0e7cf35f616d9a8553daa897e53256b942b11cc2fa255c9ba6d43687ac6c19bdbbc7312f5298025a95fb24d1e883fd277f1cde251b702730c2e48701bb2ce535f63e9b0a5fd60da021f84458c5dae5f826743a7eb0ba83530a0bf65717e77c55cee05dc24842aaab8b737549c1ba41c87c293b911ee5d0ef51fc0f9d6a4f8f8eb6d36e2852f1bf7c82758a9457afb72bedf2e14544a05113cc7a405e727dee903fadf8bf010000ffffe24203a12c070000", + "9f2cd2b558614a5c60040aab8da872b8": "1f8b08000000000000ffcc544d6fdc36103d8bbf62422005592c2823bd357501c745ea006e11d875839e029a1a498425522187f1b681ff7b4152bbfeca47835e72da0567e6cd9b796fb46873a507046dc87a1719b3f3e2038160000dffe9e921e86551af6bd6ebab019efedccebec32972d6f0c1d2982e95f1733bf8cbd4f77af2edfafbc9f8e29707b1e56a6831041f226792b1b6bd8818e2ef780d015d8721028d08293f42efc3ccfae40cec928481155a1d7b47b82509050d3eb026c18f875009ab5cf0e18635469d23099ef1f80692644d404ac1815167a59f787670b081a04efef8edb4e6c5d6e1b55aa6144735d23c7129d94d665a591c07d4841070b091324b0d0eaf0b63b8b63416fe7a59266b74deb3ba3341adfdf210df3d98c2f63921478c7a615d27927c5e5e9e1c82b353aedbcd5577abde581acf499b2b812148d6dc30d6d0b622fca9a78482d3964b25be5ffc9269382cae90ac798f21c4cdae61522b69daca3d91af6a6b7b2890ea44c723f7b790a5eeb130bba7d51d9b5a256f7b7c9d64a577868cd17a27640537290474f43657bdb55d6ead5efd2273e6cb49c7514875d47582c7640cc6cc82bfc1c9f819813cbca8b23de192dd335267031a123f1c3cdb006ff9ce2fe748c7b55f16123411ce0bc58cd45bd781aeaeb9d4113bf0ae38e701c10c636b24d64914bceac13b049b0f24b90e2ce5ff11698f515db53aef3e0be1704b7bff9d68d74d18e4c3872cd13a5fc6f8ac63b3c0c976d55bb7ebfef563eb96cf4bea1dff7cdcf0cd7f356bd3ac3ea5ad7a592e63933b94c863b37ec9ae4d537a9bc75ed979f4e6d68e7991c214a355b98f128d3ed87ff2c7e15db201f702234c7e18b0cb525e62ef73a8f8cbba0134049f08ab587b8c6f42a7c33bab7b744a61b5fdc5d929df94337897309290eae2ec549d53b06e10325fca5ea47b18fa3d8affa153e574ef683bed862215ffcb279853a4bc7abd5b69970f2f22028d9a60d103f282f5b943feb4e2ff060000ffff27e83bea4e070000", "a01cc25da2e0a93b50354da0dc1f8bbf": "1f8b08000000000000ff4a29ca2f882f494cca49d5502a2d4e2d2a56d204040000ffffd20a403f13000000", "a2207b19374ea4f8615891ea6bdc8c0a": "1f8b08000000000000ff548fc16ae3301086cfd653081d16693172f6bab0a7253d95b484400fa514c51d2ba296e48c4634c1f8dd8b1453da8b0edf7c9aff9fc9f4efc6029f67ae83f1a01f57b02c8c393f45242e59230812b96005638db08e4ef9a8fbe83b1b8f7918cc183b0b215ccb5b4cf1d34a8440fd09bbba65b87608e7ec1004538c0d39f4fc00895e77f02189ff5ea3f441f19935c8fffee3abafaba1186b6ccb01eba8a05f0f13b918d2bc28d6a0dec52d62440988c5c51c8ab8562b3bf6390440a9ea4c3f393a495bcdafaf85ef7390aa6248b5446190f24849deec7b081221e9ffd17b13de52cb37ea3bbf7323a496ff29f670bb6385cf9b97226ecfd98c52c0c5f869044d17122d1ff4ce7828d10bfb0c0000fffffb4a36cd9f010000", "a92590b1cd465e5f1bdb64e7a56bbe85": "1f8b08000000000000ffb492cf6ed4301087cff1538c2c15d928722b8e2b8a68d3855da9c04a29e768944c236b633bccd84055f5dd511a0e2ca75eeae36fbef17cfe33637fc49100fbec5314a57c981367d0efcf2e01e7d91d56e0701ce1ecc37948034da295ba2fb10783026faf9e3bdbe23359b823c9dd2e05da611c266263e151554c029b4b4071bbbb2fb7469f6beb3e53365655286efba3e064de5d5cd4c024ae4903ad8526c58c3e8a59e2eb343cb836b38fa3b135e8d68f11f6515bf5f4629bee368d230dfbb86a9545eacd7a24f75d881f55556d03fa6903ff2d1d908f1fe937867922d7a7a06b55550714f9957838c5f5fc373e619a14ef3d075cf436a7cc93aa7e12b3d440cc8b53710d13663228eee67abd8caf69cb9cd810f31a7cc249c83c37ba1dca557c3076adb424e253742d65a3fbc24c317745883b3fe81a8adbdf58f58aaff2ad64bd0cf847a5990879d97919fa8a3fe14f000000ffffcdbc5956cf020000", + "b29e7a154acbba5fcb7dd05cf3cd6889": "1f8b08000000000000ff5c8e4d4bc3401040eff9154360a105d38f6bdc060473100445eb59d6649a1ddd6ccbcea4b694fe7749524dec6d9979fbde6896a3c32c029899466c52a0170ca70800a024de39734c61e3f070db8d8ca3ca272458730a3ddb2f3e1b16da1c9362eb05bdfc5f5aa4ca4a0acbc542b593739be3cee4930ff17dae36a1229f845f7677e8593dbfdc18e992f65038c3bc8a47d7c6edf95aad803630299a10d0cb7bc318a670029575726d97598b8cd7b3bc36e440657a6e97174cadc091ff5a6f276de0d9889d4c6fe0541a31498d62b7650af17dfe98aff3f83c6df5af5479786a442b38f7b5ee858e71941fbc1ebfeffed483e1c10f826bfe8d31f0e8c30b56c482e12aa9b248cf4bda6751f4130000ffff5b963682d7010000", "b9767baf31d852499c51ecceba737f31": "1f8b08000000000000ff64ceb16ac4301004d0febe6210082408fe807071737daaa43e36e74d4e604966572218e37f0f32c4855d49306f867d0853e17ba1af919da9caa2c62f170028dd2d8f352667c2605e606adddec54c1222c96c5e51a4f2ea0f9a2385b115b448483fad723213a9fe6619ee4fd2e7c96ef86adff09d058e4a118f90d03e8a05b6c761aed99676ef14b9fb4c038b3eb2b0f3b07d9bdfc12dc798d3c73cedd9ff71578b15b6bfac7f010000ffff2c8a894513010000", "be44524cf7632186621aa964a75e08ff": "1f8b08000000000000ffdc94db4bc33014c69f93bf221426a98c385f87137556f6a20c9c3ef832427736cb9aa69e93e864ec7f9776177771781d03fb543ebe9ce4fb9de4e43a1eea0108637b9012e789c92d3a21b910c149a521749eabf6d4d31e0e44e5f468ea0c78c879df67b19086c4e17521defac441283a40ae7b4780dd268276204331e62cb63e73550188a2de1086d4e5856a169a0c3c015210726648ddd808d1a204c4a9103d799dca5a55940542ce992f0a1c141b8c396391d1495a176b5f60340ecf60a44d9e828aad09aa9cb1b6267ab1d85bb507f94c5ef1346dd64fd06897d8acbeea9970561eed01d04aafe62b5a9a1e8bf33d03222d927a35a35046de12f24aa704b25ca85a9aceb35719cead6ecb364b40bfcff378c173f2d53676ef759af44a1e6549da6d5fdf7bb5c6fe8fd177d06f92ff25ddda0fe816ffd12821b763ae7b792fffe7b914383fa4f919c1cd09b2147c8f77757912bc050000ffff109fa9920d060000", "dfff4504e246e9135a955a5c85c6c47f": "1f8b08000000000000ff9490d14aeb401086af334f312cf4b07b08db9c9ebb62458d452fb404acd76548a72534c9c6d90d154adf5dd214690441f772f69ff9f8bf86f21d6d19290f85ab3d4051354e026a405457a31952d3d8ac0f65bb2d8eaec7955b73e91518804d5be7a8c9e3dfdbd3fe4b5b0436b8641f56af9ec5af16bcd7060f10097b9cce90bc7d5c3e3f69356ebbff71cd7b65ec03076d20226fe76f2d957a9224310a7b9bba351b38fe84940a53e01e96bbb60e31b2c899797f67d36ea6d509ab7ad8c2cd459c6816b9a427319e0e1880a8ed0efce92bdb0e7480289a57549453fcf25445b2bbe177aa9a926dee2a15431465e4fddec97a1857cd793cc8a4aede14525157703acc1ce13b85cad8ccf9a0dbcb0aff93c9a5c08191df0bf9f729e4081f010000ffff3e04abba31020000", "e23171fc37a4565aaac143176b307056": "1f8b08000000000000ff3c8d31ae833010447b9f624af8053eca4f957e036bb0426c6bbd5b20cb778f8210ede8bd3785e637ad8cd63025faf0f4b886de9df31eff45634e15210b564e2ca431ad68eda47b777a14bea9aa62b3a239c07bd0b2e0c826a86a21606361d7dd997dd21e1752866ea4c8974ec2b06af4dad9054b33865cb4e2efca8fb7368c60912ce793b09a24a4b8ffeadf000000ffffb2b3ff10d1000000", - "eb14df4228e56c2f960b297764cc0bec": "1f8b08000000000000ff648e418ba3401085effe8aa241d83d18936bb6edd37a5858189899fbd0d1526bd04ae8aace4442fefb603460986bbd57dffbace8d8a34b00363e6a9755c88ae19a0000d424a7de8f7b687abcfcb99f7c4f2d67a438c81ee6ee1c7c46516ac6ac3ab222eb73d821b59dee61b7dda6d3e536cdc99dc4d941799e1b7c6889b3f0e89e2e73d7e68b63626b3a43d57b91c2ac6ccda46fd302a8815f550c01593fa260f80d5748dd1d6ebb9d9b2aeb78530e9e7a489dcdbbdd52f3d0056c0a934f7ac7a8066aaf3e1b50bb635d98bfe5fff2bd34ee8d5a8697a836f7f338dc007bc1d5e01389d83cc40fca7050ce4e81061fc685f58f17d4fa7392949cf1ebc7b3c4aa4211e35eb125510c6b91d42536afe9ec92ef000000ffffdb3ea7e0de010000", "f1fba37d3824e70c7cb213c4303d2331": "1f8b08000000000000ffb456db6edb3813be169f622aa03fa4c0957feca5b1ee22c8a11b60130448d25e14454c49238b89442a3cc43102bffb82a4a82876936d765b5f58e270be8f73a63a5adcd225422b4a6c1421aced84d4909028465e8892f1e5f446091e9328d6acc59890285e325d9b3c2b443b5d8adc54156dc4b4135dbcbd5749353586953b1b01744f1b56528dffa8105e8454314909994eaf144a600a282c91a3a41a4bef055452b4d0137ca046d713601a14ca7b544015e81a21a70aa112128c42c9698bd38e2ab512b2048b40ae594135133c237add21b8d39496a6d0f048a29343d8fd594fb3abab934358d890cd6256c650e6eeb920d181446be4be1e636c4cb34bd662c0145eeb9a6a8f1dad1724baeaca1fe0305e6be018ad17243a6a296bb66d575a32beb46f3d075a2d0ff7af0b129df721fa93aafa656408e4754d55ed199e8b16e489ea75233e78f887f1e10782574cb62e39af22acf4f7f7736055020df2846a2d550a1fe1ff293cc2fb8f241c3b9d1e3d6849a162d8946a105bacad10074c8171700c0e0bcfb4ac3c3ba32d66e752742893d4aa0c3b9fc4e5ba432feccd7c8ebae2254a5508e995bc0bafab2c4606c0267813de37b641c0171cac24ed1498ced57d47b546c9415480bc90eb4edbf8f99d50ffbcb4686938b77b7de331c15566dba0320dac6ae4b092cc8351699591caf00212037bb655d2fef0443fc05e27baec40708e85654921d90b5d9d1d4929a49a00da676a3bcb64be3ee77d6e557629fe122b9449bf9392a8ab1d026673c89d0fd9a77e041c4bd1864249be7ecbd71a139305493a09fa875851d3e803a1744a225639ba7773e0acb1464412b5911c063bcf70e54d4dd2de58957d61babed0b4b84d50ca94441b6bfcb316093e245d9d92c0a91fb2cf3ded3e2ffb3099b4cfd9852f68a6800b0d12ef0c935842be864e743635d0d235e4082536a8b11cc2eea3eee1491a1ae39144376602d73654b6f2b2532a554d1b7b6030a8b7f166b0c152a93798300c48055fbfd9e77ff744fd245742a461895ad99206bc47b9762313d6c240419b0628c4b64683f25e0cc978bdcfcb0b7a8f13d812fadced88fd8c4ea1455d8b32b3665cd64cf5eb9d80ec4662a79702f9dbbbe99e4a57da4e4276ca7a202651f4bfa71b36f3b13f51e7121572fd786c27e30cfa0e9c801d493388dd2ade4c7e143d6e8e81642cf45cd329143516b7a005284460951b50ee1a025a9612952b4fda48a4e51a34bd453edb32e2d8f0e27358da968e7a336070c30abd1100c119273c45a5e8d21af77ef720af72cc6760b394a4900be18746e4c29d3b815bded95ad50fd9971a2526fe1e8539fc114fe0699845919d3f263b39b403c87d439cb14018ddc11cee02012bad8a879f1c7aecc6fde77e205adda307a6b4725de1a9b7465b344cb78a360a4724bdf85d6e572e13f6cf0fbcad7eeaaf9657bb2afe6ebbc4bfa02ffeed5df3b3bb2394f24e6dbfd423ea94eaa27edcd69ec077289de8b7b16cfc253481a7a21dbead4a813ea8ad3d068a917efc626afdf87a5b6a3de657a4d633bf3db5af5ee09c3564f377000000ffff0ff291c5fa0c0000", }) if err != nil { @@ -48,8 +48,8 @@ var _ = func() error { b.SetResolver("migrations/create_users.up.fizz.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "b9767baf31d852499c51ecceba737f31"}) b.SetResolver("models/user.go.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "f1fba37d3824e70c7cb213c4303d2331"}) b.SetResolver("models/user_test.go.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "be44524cf7632186621aa964a75e08ff"}) + b.SetResolver("templates/auth/landing.html", packr.Pointer{ForwardBox: gk, ForwardPath: "b29e7a154acbba5fcb7dd05cf3cd6889"}) b.SetResolver("templates/auth/new.html", packr.Pointer{ForwardBox: gk, ForwardPath: "45160bed1c4bb7bb4666d4b8a60abe27"}) - b.SetResolver("templates/index.html", packr.Pointer{ForwardBox: gk, ForwardPath: "eb14df4228e56c2f960b297764cc0bec"}) b.SetResolver("templates/users/new.html", packr.Pointer{ForwardBox: gk, ForwardPath: "174f4d25dd06c181db983c02a4d113be"}) }()