| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-08-10 10:19:28 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-08-10 10:19:28 +0200 | 
| commit | c095185daf5dc5f909c2785c2453d431199f85bf (patch) | |
| tree | f696655b3a97df6bbdd7b33d0371e658d554bc89 /src | |
| parent | 9daca5362a985adb1c3c708195bffe18def7b1ca (diff) | |
Got login to work.
Diffstat (limited to 'src')
| -rw-r--r-- | src/css/src/login.scss | 9 | ||||
| -rw-r--r-- | src/css/src/verbose.scss | 2 | ||||
| -rw-r--r-- | src/global/www/script/session.js | 10 | ||||
| -rw-r--r-- | src/login/src/Action/Session.elm | 4 | ||||
| -rw-r--r-- | src/login/src/Comm/Send.elm | 2 | ||||
| -rw-r--r-- | src/login/src/Comm/SendRecovery.elm | 40 | ||||
| -rw-r--r-- | src/login/src/Comm/SendSignIn.elm | 2 | ||||
| -rw-r--r-- | src/login/src/Comm/SendSignUp.elm | 4 | ||||
| -rw-r--r-- | src/login/src/Constants/IO.elm.m4 | 7 | ||||
| -rw-r--r-- | src/login/src/ElmModule/Update.elm | 39 | ||||
| -rw-r--r-- | src/login/src/ElmModule/View.elm | 25 | ||||
| -rw-r--r-- | src/login/src/Struct/Event.elm | 10 | ||||
| -rw-r--r-- | src/login/src/Struct/Model.elm | 12 | ||||
| -rw-r--r-- | src/login/src/Update/HandleServerReply.elm | 60 | ||||
| -rw-r--r-- | src/login/src/Update/SendRecovery.elm | 29 | ||||
| -rw-r--r-- | src/login/src/View/AccountRecovery.elm | 22 | ||||
| -rw-r--r-- | src/login/src/View/Header.elm.m4 | 13 | ||||
| -rw-r--r-- | src/login/src/View/SignIn.elm | 31 | ||||
| -rw-r--r-- | src/login/src/View/SignUp.elm | 56 | 
19 files changed, 314 insertions, 63 deletions
diff --git a/src/css/src/login.scss b/src/css/src/login.scss index f3e5df4..afc9e60 100644 --- a/src/css/src/login.scss +++ b/src/css/src/login.scss @@ -193,6 +193,7 @@ article .multi-input     flex-direction: column;     flex: 1; +   transition: background-color 0.3s ease-out, border 0.3s ease-out;  }  .multi-input input:first-child @@ -200,12 +201,18 @@ article .multi-input     margin-bottom: 0.5em;  } -.multi-input input:nth-child(2) +.multi-input input.incorrect  {     background: $RED-4;     border: 2px solid $RED-2;  } +.multi-input input.correct +{ +   background: $GREEN-4; +   border: 2px solid $GREEN-2; +} +  article input  {     background: $BLUE-5; diff --git a/src/css/src/verbose.scss b/src/css/src/verbose.scss index d75334a..445d402 100644 --- a/src/css/src/verbose.scss +++ b/src/css/src/verbose.scss @@ -12,6 +12,8 @@ body     display: flex;     flex-direction: column;     background-color: $BROWN-2; + +   align-items: center;  }  body > header, diff --git a/src/global/www/script/session.js b/src/global/www/script/session.js index c712999..771f2c2 100644 --- a/src/global/www/script/session.js +++ b/src/global/www/script/session.js @@ -71,8 +71,9 @@ function (token)  }  tacticians_online.session.store_new_session = -function (user_id, token) +function (session)  { +   var [user_id, token] = session;     tacticians_online.session.set_user_id(user_id);     tacticians_online.session.set_token(token);     tacticians_online.session.store(); @@ -81,8 +82,9 @@ function (user_id, token)  tacticians_online.session.attach_to =  function (app)  { -   app.ports.store_new_session.subscribe = -      tacticians_online.session.store_new_session; +   app.ports.store_new_session.subscribe( +      tacticians_online.session.store_new_session +   ); -   app.ports.reset_session.subscribe = tacticians_online.session.reset; +   app.ports.reset_session.subscribe(tacticians_online.session.reset);  } diff --git a/src/login/src/Action/Session.elm b/src/login/src/Action/Session.elm new file mode 100644 index 0000000..eab1658 --- /dev/null +++ b/src/login/src/Action/Session.elm @@ -0,0 +1,4 @@ +port module Action.Session exposing (..) + +port store_new_session : (String, String) -> (Cmd msg) +port reset_session : () -> (Cmd msg) diff --git a/src/login/src/Comm/Send.elm b/src/login/src/Comm/Send.elm index ddaa047..e488d77 100644 --- a/src/login/src/Comm/Send.elm +++ b/src/login/src/Comm/Send.elm @@ -25,7 +25,7 @@ internal_decoder : String -> (Json.Decode.Decoder Struct.ServerReply.Type)  internal_decoder reply_type =     case reply_type of        "okay" -> (Comm.Okay.decode) -      "set_session" -> (Comm.SetSession.decode) +      "sse" -> (Comm.SetSession.decode)        other ->           (Json.Decode.fail              ( diff --git a/src/login/src/Comm/SendRecovery.elm b/src/login/src/Comm/SendRecovery.elm new file mode 100644 index 0000000..e9fd3a9 --- /dev/null +++ b/src/login/src/Comm/SendRecovery.elm @@ -0,0 +1,40 @@ +module Comm.SendRecovery exposing (try) + +-- Elm ------------------------------------------------------------------------- +import Json.Encode + +-- Map ------------------------------------------------------------------- +import Comm.Send + +import Constants.IO + +import Struct.Event +import Struct.Model + +-------------------------------------------------------------------------------- +-- TYPES ------------------------------------------------------------------------ +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +try_encoding : Struct.Model.Type -> (Maybe Json.Encode.Value) +try_encoding model = +   (Just +      (Json.Encode.object +         [ +            ("eml", (Json.Encode.string model.email1)) +         ] +      ) +   ) + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +try : Struct.Model.Type -> (Maybe (Cmd Struct.Event.Type)) +try model = +   (Comm.Send.try_sending +      model +      Constants.IO.login_recovery_handler +      try_encoding +   ) diff --git a/src/login/src/Comm/SendSignIn.elm b/src/login/src/Comm/SendSignIn.elm index bf1c7c3..723b8d3 100644 --- a/src/login/src/Comm/SendSignIn.elm +++ b/src/login/src/Comm/SendSignIn.elm @@ -24,7 +24,7 @@ try_encoding model =        (Json.Encode.object           [              ("usr", (Json.Encode.string model.username)), -            ("pwd", (Json.Encode.string model.password)) +            ("pwd", (Json.Encode.string model.password1))           ]        )     ) diff --git a/src/login/src/Comm/SendSignUp.elm b/src/login/src/Comm/SendSignUp.elm index 0094178..546416c 100644 --- a/src/login/src/Comm/SendSignUp.elm +++ b/src/login/src/Comm/SendSignUp.elm @@ -24,8 +24,8 @@ try_encoding model =        (Json.Encode.object           [              ("usr", (Json.Encode.string model.username)), -            ("pwd", (Json.Encode.string model.password)), -            ("eml", (Json.Encode.string model.email)) +            ("pwd", (Json.Encode.string model.password1)), +            ("eml", (Json.Encode.string model.email1))           ]        )     ) diff --git a/src/login/src/Constants/IO.elm.m4 b/src/login/src/Constants/IO.elm.m4 index 674f910..fdb5ed3 100644 --- a/src/login/src/Constants/IO.elm.m4 +++ b/src/login/src/Constants/IO.elm.m4 @@ -7,7 +7,10 @@ login_handler_url : String  login_handler_url = (base_url ++ "/handler/login")  login_sign_in_handler : String -login_sign_in_handler = (login_handler_url ++ "/plr_sign_in") +login_sign_in_handler = (login_handler_url ++ "/lgn_sign_in")  login_sign_up_handler : String -login_sign_up_handler = (login_handler_url ++ "/plr_sign_up") +login_sign_up_handler = (login_handler_url ++ "/lgn_sign_up") + +login_recovery_handler : String +login_recovery_handler = (login_handler_url ++ "/lgn_recovery") diff --git a/src/login/src/ElmModule/Update.elm b/src/login/src/ElmModule/Update.elm index 6245ae1..babb5b5 100644 --- a/src/login/src/ElmModule/Update.elm +++ b/src/login/src/ElmModule/Update.elm @@ -9,6 +9,7 @@ import Struct.Model  import Update.HandleServerReply  import Update.SendSignIn  import Update.SendSignUp +import Update.SendRecovery  import Update.SelectTab  -------------------------------------------------------------------------------- @@ -40,15 +41,49 @@ update event model =        (Struct.Event.ServerReplied result) ->           (Update.HandleServerReply.apply_to model result) -      Struct.Event.SendSignInRequested -> +      Struct.Event.SignInRequested ->           (Update.SendSignIn.apply_to new_model) -      Struct.Event.SendSignUpRequested -> +      Struct.Event.SignUpRequested ->           (Update.SendSignUp.apply_to model) +      Struct.Event.RecoveryRequested -> +         (Update.SendRecovery.apply_to model) +        (Struct.Event.TabSelected tab) ->           (Update.SelectTab.apply_to new_model tab)        (Struct.Event.RequestedHelp _) ->           -- TODO           (model, Cmd.none) + +      (Struct.Event.SetUsername str) -> +         ( +            {model | username = str}, +            Cmd.none +         ) + +      (Struct.Event.SetPassword1 str) -> +         ( +            {model | password1 = str}, +            Cmd.none +         ) + +      (Struct.Event.SetPassword2 str) -> +         ( +            {model | password2 = str}, +            Cmd.none +         ) + +      (Struct.Event.SetEmail1 str) -> +         ( +            {model | email1 = str}, +            Cmd.none +         ) + +      (Struct.Event.SetEmail2 str) -> +         ( +            {model | email2 = str}, +            Cmd.none +         ) + diff --git a/src/login/src/ElmModule/View.elm b/src/login/src/ElmModule/View.elm index 874eb01..657e063 100644 --- a/src/login/src/ElmModule/View.elm +++ b/src/login/src/ElmModule/View.elm @@ -6,10 +6,13 @@ import Html.Lazy  import Html.Attributes  -- Map ------------------------------------------------------------------- +import Struct.Error  import Struct.Event  import Struct.Model  import Struct.UI +import Util.Html +  import View.AccountRecovery  import View.Header  import View.MainMenu @@ -40,11 +43,25 @@ view model =                 ),                 (                    case (Struct.UI.try_getting_displayed_tab model.ui) of -                     (Just Struct.UI.SignInTab) -> (View.SignIn.get_html) -                     (Just Struct.UI.SignUpTab) -> (View.SignUp.get_html) +                     (Just Struct.UI.SignInTab) -> (View.SignIn.get_html model) +                     (Just Struct.UI.SignUpTab) -> (View.SignUp.get_html model)                       (Just Struct.UI.RecoveryTab) -> -                        (View.AccountRecovery.get_html) -                     _ -> (View.SignIn.get_html) +                        (View.AccountRecovery.get_html model) + +                     _ -> (View.SignIn.get_html model) +               ), +               ( +                  case model.error of +                     Nothing -> (Util.Html.nothing) +                     (Just err) -> +                        (Html.div +                           [ +                              (Html.Attributes.class "error-msg") +                           ] +                           [ +                              (Html.text (Struct.Error.to_string err)) +                           ] +                        )                 )              ]           ) diff --git a/src/login/src/Struct/Event.elm b/src/login/src/Struct/Event.elm index b473475..662b768 100644 --- a/src/login/src/Struct/Event.elm +++ b/src/login/src/Struct/Event.elm @@ -16,8 +16,14 @@ type Type =     None     | Failed Struct.Error.Type     | RequestedHelp Struct.HelpRequest.Type -   | SendSignInRequested -   | SendSignUpRequested +   | SignInRequested +   | SignUpRequested +   | RecoveryRequested +   | SetUsername String +   | SetPassword1 String +   | SetPassword2 String +   | SetEmail1 String +   | SetEmail2 String     | ServerReplied (Result Http.Error (List Struct.ServerReply.Type))     | TabSelected Struct.UI.Tab diff --git a/src/login/src/Struct/Model.elm b/src/login/src/Struct/Model.elm index 787d6ba..cb7bf35 100644 --- a/src/login/src/Struct/Model.elm +++ b/src/login/src/Struct/Model.elm @@ -25,8 +25,10 @@ type alias Type =        help_request: Struct.HelpRequest.Type,        error: (Maybe Struct.Error.Type),        username: String, -      password: String, -      email: String, +      password1: String, +      password2: String, +      email1: String, +      email2: String,        player_id: String,        session_token: String,        ui: Struct.UI.Type @@ -48,8 +50,10 @@ new flags =              help_request = Struct.HelpRequest.None,              error = Nothing,              username = "", -            password = "", -            email = "", +            password1 = "", +            password2 = "", +            email1 = "", +            email2 = "",              player_id = flags.user_id,              session_token = flags.token,              ui = (Struct.UI.default) diff --git a/src/login/src/Update/HandleServerReply.elm b/src/login/src/Update/HandleServerReply.elm index cdad752..8720457 100644 --- a/src/login/src/Update/HandleServerReply.elm +++ b/src/login/src/Update/HandleServerReply.elm @@ -8,6 +8,8 @@ import Dict  import Http  -- Map ------------------------------------------------------------------- +import Action.Session +  import Struct.Error  import Struct.Event  import Struct.Model @@ -24,26 +26,46 @@ import Struct.UI  set_session : (        String ->        String -> -      (Struct.Model.Type, (Maybe Struct.Error.Type)) -> -      (Struct.Model.Type, (Maybe Struct.Error.Type)) +      ( +         Struct.Model.Type, +         (Maybe Struct.Error.Type), +         (List (Cmd Struct.Event.Type)) +      ) -> +      ( +         Struct.Model.Type, +         (Maybe Struct.Error.Type), +         (List (Cmd Struct.Event.Type)) +      )     )  set_session pid stk current_state =     case current_state of -      (_, (Just _)) -> current_state +      (_, (Just _), _) -> current_state -      (model, _) -> +      (model, _, cmd_list) ->           (              {model |                 player_id = pid,                 session_token = stk              }, -            Nothing +            Nothing, +            ( +               (Action.Session.store_new_session (pid, stk)) +               :: cmd_list +            )           )  apply_command : (        Struct.ServerReply.Type -> -      (Struct.Model.Type, (Maybe Struct.Error.Type)) -> -      (Struct.Model.Type, (Maybe Struct.Error.Type)) +      ( +         Struct.Model.Type, +         (Maybe Struct.Error.Type), +         (List (Cmd Struct.Event.Type)) +      ) -> +      ( +         Struct.Model.Type, +         (Maybe Struct.Error.Type), +         (List (Cmd Struct.Event.Type)) +      )     )  apply_command command current_state =     case command of @@ -73,10 +95,22 @@ apply_to model query_result =        (Result.Ok commands) ->           ( -            ( -               case (List.foldl (apply_command) (model, Nothing) commands) of -                  (updated_model, Nothing) -> updated_model -                  (_, (Just error)) -> (Struct.Model.invalidate error model) -            ), -            Cmd.none +            case +               (List.foldl +                  (apply_command) +                  (model, Nothing, []) +                  commands +               ) +            of +               (updated_model, Nothing, cmds) -> +                  ( +                     updated_model, +                     (Cmd.batch cmds) +                  ) + +               (_, (Just error), _) -> +                  ( +                     (Struct.Model.invalidate error model), +                     Cmd.none +                  )           ) diff --git a/src/login/src/Update/SendRecovery.elm b/src/login/src/Update/SendRecovery.elm new file mode 100644 index 0000000..313477b --- /dev/null +++ b/src/login/src/Update/SendRecovery.elm @@ -0,0 +1,29 @@ +module Update.SendRecovery exposing (apply_to) +-- Elm ------------------------------------------------------------------------- + +-- Map ------------------------------------------------------------------- +import Comm.SendRecovery + +import Struct.Event +import Struct.Model + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +apply_to : ( +      Struct.Model.Type -> +      (Struct.Model.Type, (Cmd Struct.Event.Type)) +   ) +apply_to model = +   ( +      model, +      (case (Comm.SendRecovery.try model) of +         (Just cmd) -> cmd +         Nothing -> Cmd.none +      ) +   ) + diff --git a/src/login/src/View/AccountRecovery.elm b/src/login/src/View/AccountRecovery.elm index 0004053..5010bb1 100644 --- a/src/login/src/View/AccountRecovery.elm +++ b/src/login/src/View/AccountRecovery.elm @@ -7,6 +7,7 @@ import Html.Events  -- Map -------------------------------------------------------------------  import Struct.Event +import Struct.Model  import Struct.UI  -------------------------------------------------------------------------------- @@ -16,8 +17,8 @@ import Struct.UI  --------------------------------------------------------------------------------  -- EXPORTED --------------------------------------------------------------------  -------------------------------------------------------------------------------- -get_html : (Html.Html Struct.Event.Type) -get_html = +get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type) +get_html model =     (Html.article        []        [ @@ -27,12 +28,23 @@ get_html =              ]              [                 (Html.h1 [] [(Html.text "Email")]), -               (Html.input [] []) +               (Html.input +                  [ +                     (Html.Events.onInput Struct.Event.SetEmail1), +                     (Html.Attributes.value model.email1) +                  ] +                  [ +                  ] +               )              ]           ),           (Html.button -            [] -            [ (Html.text "Send") ] +            [ +               (Html.Events.onClick Struct.Event.RecoveryRequested) +            ] +            [ +               (Html.text "Send") +            ]           )        ]     ) diff --git a/src/login/src/View/Header.elm.m4 b/src/login/src/View/Header.elm.m4 index 81ac132..c14e1d5 100644 --- a/src/login/src/View/Header.elm.m4 +++ b/src/login/src/View/Header.elm.m4 @@ -16,7 +16,7 @@ link_html : String -> String -> Bool -> (Html.Html Struct.Event.Type)  link_html src label is_active =     (Html.a        [ -         (Html.Attributes.src src) +         (Html.Attributes.href src)        ]        [           ( @@ -54,11 +54,18 @@ get_html =                 (Html.Attributes.class "main-server-logo")              ]              [ -               (Html.img +               (Html.a                    [ -                     (Html.Attributes.src "__CONF_SERVER_LOGO") +                     (Html.Attributes.href "__CONF_SERVER_URL")                    ]                    [ +                     (Html.img +                        [ +                           (Html.Attributes.src "__CONF_SERVER_LOGO") +                        ] +                        [ +                        ] +                     )                    ]                 )              ] diff --git a/src/login/src/View/SignIn.elm b/src/login/src/View/SignIn.elm index 2c24526..d758263 100644 --- a/src/login/src/View/SignIn.elm +++ b/src/login/src/View/SignIn.elm @@ -7,6 +7,7 @@ import Html.Events  -- Map -------------------------------------------------------------------  import Struct.Event +import Struct.Model  import Struct.UI  -------------------------------------------------------------------------------- @@ -16,8 +17,8 @@ import Struct.UI  --------------------------------------------------------------------------------  -- EXPORTED --------------------------------------------------------------------  -------------------------------------------------------------------------------- -get_html : (Html.Html Struct.Event.Type) -get_html = +get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type) +get_html model =     (Html.article        []        [ @@ -26,8 +27,15 @@ get_html =                 (Html.Attributes.class "user-input")              ]              [ -               (Html.h1 [] [(Html.text "Username")]), -               (Html.input [] []) +               (Html.h1 [] [ (Html.text "Username") ]), +               (Html.input +                  [ +                     (Html.Events.onInput Struct.Event.SetUsername), +                     (Html.Attributes.value model.username) +                  ] +                  [ +                  ] +               )              ]           ),           (Html.div @@ -38,15 +46,22 @@ get_html =                 (Html.h1 [] [(Html.text "Password")]),                 (Html.input                    [ -                     (Html.Attributes.type_ "password") +                     (Html.Attributes.type_ "password"), +                     (Html.Events.onInput Struct.Event.SetPassword1), +                     (Html.Attributes.value model.password1) +                  ] +                  [                    ] -                  []                 )              ]           ),           (Html.button -            [] -            [ (Html.text "Send") ] +            [ +               (Html.Events.onClick Struct.Event.SignInRequested) +            ] +            [ +               (Html.text "Send") +            ]           )        ]     ) diff --git a/src/login/src/View/SignUp.elm b/src/login/src/View/SignUp.elm index 3737fed..fe7a8a3 100644 --- a/src/login/src/View/SignUp.elm +++ b/src/login/src/View/SignUp.elm @@ -7,6 +7,7 @@ import Html.Events  -- Map -------------------------------------------------------------------  import Struct.Event +import Struct.Model  import Struct.UI  -------------------------------------------------------------------------------- @@ -16,8 +17,8 @@ import Struct.UI  --------------------------------------------------------------------------------  -- EXPORTED --------------------------------------------------------------------  -------------------------------------------------------------------------------- -get_html : (Html.Html Struct.Event.Type) -get_html = +get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type) +get_html model =     (Html.article        []        [ @@ -27,7 +28,14 @@ get_html =              ]              [                 (Html.h1 [] [(Html.text "Username")]), -               (Html.input [] []) +               (Html.input +                  [ +                     (Html.Events.onInput Struct.Event.SetUsername), +                     (Html.Attributes.value model.username) +                  ] +                  [ +                  ] +               )              ]           ),           (Html.p @@ -69,15 +77,26 @@ get_html =                    [                       (Html.input                          [ -                           (Html.Attributes.type_ "password") +                           (Html.Attributes.type_ "password"), +                           (Html.Events.onInput Struct.Event.SetPassword1), +                           (Html.Attributes.value model.password1) +                        ] +                        [                          ] -                        []                       ),                       (Html.input                          [ -                           (Html.Attributes.type_ "password") +                           (Html.Attributes.type_ "password"), +                           (Html.Events.onInput Struct.Event.SetPassword2), +                           (Html.Attributes.value model.password2), +                           ( +                              if (model.password1 == model.password2) +                              then (Html.Attributes.class "correct") +                              else (Html.Attributes.class "incorrect") +                           ) +                        ] +                        [                          ] -                        []                       )                    ]                 ) @@ -107,13 +126,24 @@ get_html =                    [                       (Html.input                          [ +                           (Html.Events.onInput Struct.Event.SetEmail1), +                           (Html.Attributes.value model.email1) +                        ] +                        [                          ] -                        []                       ),                       (Html.input                          [ +                           (Html.Events.onInput Struct.Event.SetEmail2), +                           (Html.Attributes.value model.email2), +                           ( +                              if (model.email1 == model.email2) +                              then (Html.Attributes.class "correct") +                              else (Html.Attributes.class "incorrect") +                           ) +                        ] +                        [                          ] -                        []                       )                    ]                 ) @@ -137,8 +167,12 @@ get_html =              ]           ),           (Html.button -            [] -            [ (Html.text "Send") ] +            [ +               (Html.Events.onClick Struct.Event.SignUpRequested) +            ] +            [ +               (Html.text "Send") +            ]           )        ]     )  | 


