Skip to content

Commit

Permalink
Add login page scaffolding
Browse files Browse the repository at this point in the history
  • Loading branch information
KyleMcMaster committed Nov 18, 2022
1 parent de6bd27 commit 02ddde0
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 1 deletion.
56 changes: 56 additions & 0 deletions src/Microsoft.eShopWeb.Web/Account/Login/Login.Page.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
namespace Microsoft.eShopWeb.Web.Account.Login

open Microsoft.eShopWeb.Web
open Microsoft.eShopWeb.Web.Domain
open Microsoft.eShopWeb.Web.Persistence
open Microsoft.EntityFrameworkCore
open Microsoft.FSharp.Core.Option
open EntityFrameworkCore.FSharp.DbContextHelpers
open Falco
open Falco.Markup
open Falco.Markup.Elem
open Falco.Markup.Attr
open Falco.Markup.Text
open System.Linq

module LoginPage =

type Props = { Basket: Basket }

module private Template =

let metadata: PublicLayout.HeadMetadata = { Title = "Login"; Description = "" }

let head = PublicLayout.head metadata

let body props: XmlNode =
PublicLayout.body
[
div
[ class' "container account-login-container" ]
[ h2 [] [ raw "Log in"]
div [ class' "row" ] [
div [ class' "col-md-12" ] [
section [] [] ] ] ] ] // TODO: finish this HTML
props.Basket

/// <summary>
/// Generates the <see cref="XmlNode" /> rendering for the Login page
/// </summary>
let page props =
PublicLayout.layout head (body props)

let handler: HttpHandler =
Services.inject<ShopContext> (fun db ->
fun ctx ->
task {
let! existingBasket =
(db.Baskets.Include(fun b -> b.Items).OrderBy(fun b -> b.Id).Take(1))
|> tryFirstTaskAsync

let basket = existingBasket |> defaultValue (emptyBasket)

let props = { Basket = basket }

return Response.ofHtml (Template.page props) ctx
})
1 change: 0 additions & 1 deletion src/Microsoft.eShopWeb.Web/Basket/Basket.Page.fs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ open System.Linq
open Microsoft.EntityFrameworkCore

module BasketPage =
open System

module private Template =

Expand Down
1 change: 1 addition & 0 deletions src/Microsoft.eShopWeb.Web/Microsoft.eShopWeb.Web.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<Compile Include="Persistence.fs" />
<Compile Include="Request.fs" />
<Compile Include="Layout\Public.Layout.fs" />
<Compile Include="Account\Login\Login.Page.fs" />
<Compile Include="Home\CatalogFilters.Component.fs" />
<Compile Include="Home\CatalogGrid.Component.fs" />
<Compile Include="Home\CatalogPager.Component.fs" />
Expand Down
3 changes: 3 additions & 0 deletions src/Microsoft.eShopWeb.Web/Program.fs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ open Microsoft.EntityFrameworkCore
open Persistence

module Program =
open Microsoft.eShopWeb.Web.Account.Login

// let getById =
// fun (repository) -> fun (id: Guid) -> repository |> List.tryFind (fun x -> x.Id = id)
Expand Down Expand Up @@ -69,6 +70,8 @@ module Program =
get "/basket" BasketPage.get
post "/basket" BasketPage.post

get "/identity/account/login" LoginPage.handler

//get "/catalogItems/{id:guid}" (Request.mapRoute getCatalogItemByIdFromRoute responseHandler)
]
}
Expand Down

0 comments on commit 02ddde0

Please sign in to comment.