Commit cabe1c46e5b9649c588cc9d80a29adfe163d4676

Authored by Ryan Glover
1 parent 98c57048b7
Exists in master

Add a simple signup/login loop.

... ... @@ -45,14 +45,17 @@ Base comes with a pre-defined file structure common to all projects along with s
45 45 ---------/vendor
46 46 ---------/views
47 47 ------------/public
48   ----------------login.html
49   ----------------recover-password.html
50   ----------------reset-password.html
51   ----------------signup.html
  48 +---------------_login.scss
  49 +---------------_recover-password.scss
  50 +---------------_reset-password.scss
  51 +---------------_signup.scss
52 52 ---------app.scss
53   -------/views
54   ----------/example
55   -------------example.html
  53 +-------/views
  54 +---------/public
  55 +------------login.html
  56 +------------recover-password.html
  57 +------------reset-password.html
  58 +------------signup.html
56 59 ---/collections
57 60 ------example.coffee
58 61 ---/lib
... ...
client/controllers/public/login.coffee
... ... @@ -19,6 +19,18 @@ Template.login.helpers(
19 19  
20 20 # Events
21 21 Template.login.events(
22   - 'click .example': (e,t) ->
23   - # Code to run for example event.
  22 + 'submit form': (e) ->
  23 +
  24 + # Prevent form from submitting.
  25 + e.preventDefault()
  26 +
  27 + # Grab the user's details.
  28 + user =
  29 + email: $('[name="emailAddress"]').val()
  30 + password: $('[name="password"]').val()
  31 +
  32 + # Create the user's account.
  33 + Meteor.loginWithPassword(user.email, user.password, (error)->
  34 + alert error.reason if error
  35 + )
24 36 )
... ...
client/controllers/public/signup.coffee
... ... @@ -19,6 +19,18 @@ Template.signup.helpers(
19 19  
20 20 # Events
21 21 Template.signup.events(
22   - 'click .example': (e,t) ->
23   - # Code to run for example event.
  22 + 'submit form': (e) ->
  23 +
  24 + # Prevent form from submitting.
  25 + e.preventDefault()
  26 +
  27 + # Grab the user's details.
  28 + user =
  29 + email: $('[name="emailAddress"]').val()
  30 + password: $('[name="password"]').val()
  31 +
  32 + # Create the user's account.
  33 + Accounts.createUser(user, (error)->
  34 + alert error.reason if error
  35 + )
24 36 )
... ...
client/routes/filters.coffee
... ... @@ -11,7 +11,7 @@
11 11 re-route them to the login screen.
12 12 ###
13 13 checkUserLoggedIn = ->
14   - if not Meteor.loggingIn() or Meteor.user()
  14 + if not Meteor.loggingIn() and not Meteor.user()
15 15 Router.go '/login'
16 16 @pause
17 17  
... ...
client/stylesheets/sass/application.scss
... ... @@ -0,0 +1,5 @@
  1 +/* Globals */
  2 +@import "globals/extends";
  3 +
  4 +/* Views */
  5 +@import "views/public/login";
... ...
client/stylesheets/sass/globals/_extends.scss
... ... @@ -0,0 +1,17 @@
  1 +/*
  2 + Clearfix
  3 + via http://nicolasgallagher.com/micro-clearfix-hack
  4 +*/
  5 +%clearfix {
  6 + *zoom: 1;
  7 +
  8 + &:before,
  9 + &:after {
  10 + display: table;
  11 + content: "";
  12 + }
  13 +
  14 + &:after {
  15 + clear: both;
  16 + }
  17 +}
... ...
client/stylesheets/sass/globals/_mixins.scss
client/stylesheets/sass/views/public/_login.scss
... ... @@ -0,0 +1,4 @@
  1 +.login label {
  2 + display: block;
  3 + @extend %clearfix;
  4 +}
... ...
client/views/public/login.html
1 1 <template name="login">
2   - <h1>Login</h1>
  2 + <form id="application-login" class="login">
  3 + <div class="form-group">
  4 + <label for="emailAddress">Email Address</label>
  5 + <input type="email" name="emailAddress" class="form-control" placeholder="Email Address">
  6 + </div> <!-- end .form-group -->
  7 + <div class="form-group">
  8 + <label for="password"><span class="pull-left">Password</span> <a class="pull-right" href="{{pathFor 'recover-password'}}">Forgot Password?</a></label>
  9 + <input type="password" name="password" class="form-control" placeholder="Password">
  10 + </div> <!-- end .form-group -->
  11 + <div class="form-group">
  12 + <input type="submit" class="btn btn-success" value="Login">
  13 + </div> <!-- end .form-group -->
  14 + </form>
  15 + <p>Don't have an account? <a href="{{pathFor 'signup'}}">Sign Up</a>.</p>
3 16 </template>
... ...
client/views/public/signup.html
1 1 <template name="signup">
2   - <h1>Signup</h1>
  2 + <form id="application-signup" class="signup">
  3 + <div class="form-group">
  4 + <label for="emailAddress">Email Address</label>
  5 + <input type="email" name="emailAddress" class="form-control" placeholder="Email Address">
  6 + </div> <!-- end .form-group -->
  7 + <div class="form-group">
  8 + <label for="password">Password</label>
  9 + <input type="password" name="password" class="form-control" placeholder="Password">
  10 + </div> <!-- end .form-group -->
  11 + <div class="form-group">
  12 + <input type="submit" class="btn btn-success" value="Sign Up">
  13 + </div> <!-- end .form-group -->
  14 + </form>
  15 + <p>Already have an account? <a href="{{pathFor 'login'}}">Log In</a>.</p>
3 16 </template>
... ...