Support Google Sign-in client-side

TODO: Support Google Sign-in server-side

Also:
- Add Haskell to project's shell.nix
- Add stubbed Main.hs and Spec.hs
- Add common .ghci file
This commit is contained in:
William Carroll 2020-08-06 21:54:25 +01:00
parent 5f52077492
commit 1fc1087014
5 changed files with 53 additions and 1 deletions

View file

@ -1,9 +1,12 @@
let let
pkgs = import <nixpkgs> {}; pkgs = import /home/wpcarro/nixpkgs {};
in pkgs.mkShell { in pkgs.mkShell {
buildInputs = with pkgs; [ buildInputs = with pkgs; [
elmPackages.elm elmPackages.elm
elmPackages.elm-format elmPackages.elm-format
elmPackages.elm-live elmPackages.elm-live
(haskellPackages.ghcWithPackages (hpkgs: with hpkgs; [
hspec
]))
]; ];
} }

View file

@ -0,0 +1,2 @@
:set prompt "> "
:set -Wall

View file

@ -0,0 +1,6 @@
--------------------------------------------------------------------------------
module Main where
--------------------------------------------------------------------------------
main :: IO ()
main = putStrLn "Working!"

View file

@ -0,0 +1,13 @@
--------------------------------------------------------------------------------
module Spec where
--------------------------------------------------------------------------------
import Test.Hspec
import Test.QuickCheck
import Control.Exception (evaluate)
--------------------------------------------------------------------------------
main :: IO ()
main = hspec $ do
describe "Testing" $ do
it "is setup" $ do
True == True

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Google Sign-in</title>
<script src="https://apis.google.com/js/platform.js" async defer></script>
<meta name="google-signin-client_id" content="771151720060-buofllhed98fgt0j22locma05e7rpngl.apps.googleusercontent.com">
</head>
<body>
<div class="g-signin2" data-onsuccess="onSignIn"></div>
<a href="#" onclick="signOut();">Sign out</a>
<script>
function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
console.log('Name: ' + profile.getName());
console.log('Image URL: ' + profile.getImageUrl());
console.log('Email: ' + profile.getEmail()); // This is null if the 'email' scope is not present.
}
function signOut() {
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut().then(function () {
console.log('User signed out.');
});
}
</script>
</body>
</html>