Add initial version of register with validation.
parent
ec789ce7db
commit
21c8e24eca
|
@ -26,6 +26,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $compil
|
|||
$routeProvider.when("/project/:pslug/taskboard/:id", {templateUrl: "/partials/taskboard.html"})
|
||||
|
||||
$routeProvider.when("/login", {templateUrl: "/partials/login.html"})
|
||||
$routeProvider.when("/register", {templateUrl: "/partials/register.html"})
|
||||
|
||||
$routeProvider.otherwise({redirectTo: '/login'})
|
||||
$locationProvider.html5Mode(true)
|
||||
|
|
|
@ -54,6 +54,15 @@ class AuthService extends taiga.Service
|
|||
getToken: ->
|
||||
return @storage.get("token")
|
||||
|
||||
isAuthenticated: ->
|
||||
if @.getUser() != null
|
||||
return true
|
||||
return false
|
||||
|
||||
###################
|
||||
## Http interface
|
||||
###################
|
||||
|
||||
login: (username, password) ->
|
||||
url = @urls.resolve("auth")
|
||||
|
||||
|
@ -69,10 +78,46 @@ class AuthService extends taiga.Service
|
|||
@.setUser(user)
|
||||
return user
|
||||
|
||||
isAuthenticated: ->
|
||||
if @.getUser() != null
|
||||
return true
|
||||
return false
|
||||
publicRegister: (data) ->
|
||||
url = @urls.resolve("auth-register")
|
||||
|
||||
data = _.clone(data, false)
|
||||
data.type = "public"
|
||||
|
||||
return @http.post(url, data).then (response) =>
|
||||
user = @model.make_model("users", response.data)
|
||||
@.setToken(user.auth_token)
|
||||
@.setUser(user)
|
||||
return user
|
||||
|
||||
# acceptInvitiationWithNewUser: (username, email, password, token) ->
|
||||
# url = @urls.resolve("auth-register")
|
||||
# data = _.extend(data, {
|
||||
# username: username,
|
||||
# password: password,
|
||||
# token: token
|
||||
# email: email
|
||||
# existing: "off"
|
||||
# }
|
||||
# return @http.post(url, data).then (response) =>
|
||||
# user = @model.make_model("users", response.data)
|
||||
# @.setToken(user.auth_token)
|
||||
# @.setUser(user)
|
||||
# return user
|
||||
|
||||
# acceptInvitiationWithExistingUser: (username, password, token) ->
|
||||
# url = @urls.resolve("auth-register")
|
||||
# data = _.extend(data, {
|
||||
# username: username,
|
||||
# password: password,
|
||||
# token: token,
|
||||
# existing: "on"
|
||||
# }
|
||||
# return @http.post(url, data).then (response) =>
|
||||
# user = @model.make_model("users", response.data)
|
||||
# @.setToken(user.auth_token)
|
||||
# @.setUser(user)
|
||||
# return user
|
||||
|
||||
|
||||
class AuthController extends taiga.Controller
|
||||
|
@ -87,6 +132,36 @@ class AuthController extends taiga.Controller
|
|||
@location.path("/project/project-example-0/backlog")
|
||||
|
||||
|
||||
|
||||
RegisterDirective = ($auth, $confirm) ->
|
||||
link = ($scope, $el, $attrs) ->
|
||||
$scope.data = {}
|
||||
form = $el.find("form").checksley()
|
||||
|
||||
submit = ->
|
||||
if not form.validate()
|
||||
return
|
||||
|
||||
promise = $auth.publicRegister($scope.data)
|
||||
promise.then (response) ->
|
||||
# TODO: finish this.
|
||||
console.log response
|
||||
|
||||
promise.then null, (response) ->
|
||||
if response.data._error_message
|
||||
$confirm.error(response.data._error_message)
|
||||
|
||||
$el.on "submit", (event) ->
|
||||
event.preventDefault()
|
||||
submit()
|
||||
|
||||
$el.on "click", "a.button-register", (event) ->
|
||||
event.preventDefault()
|
||||
submit()
|
||||
|
||||
return {link:link}
|
||||
|
||||
module = angular.module("taigaAuth", ["taigaResources"])
|
||||
module.service("$tgAuth", AuthService)
|
||||
module.controller("AuthController", AuthController)
|
||||
module.directive("tgRegister", ["$tgAuth", "$tgConfirm", RegisterDirective])
|
||||
|
|
|
@ -25,14 +25,17 @@ class ConfirmService extends taiga.Service
|
|||
@.$inject = ["$q"]
|
||||
|
||||
constructor: (@q) ->
|
||||
@.el = angular.element(".lightbox_confirm-delete")
|
||||
_.bindAll(@)
|
||||
|
||||
hide: ->
|
||||
@.el.addClass("hidden")
|
||||
@.el.off(".confirm-dialog")
|
||||
if @.el
|
||||
@.el.addClass("hidden")
|
||||
@.el.off(".confirm-dialog")
|
||||
delete @.el
|
||||
|
||||
ask: (title, subtitle) ->
|
||||
@.el = angular.element(".lightbox_confirm-delete")
|
||||
|
||||
# Render content
|
||||
@.el.find("h2.title").html(title)
|
||||
@.el.find("span.subtitle").html(subtitle)
|
||||
|
@ -52,6 +55,22 @@ class ConfirmService extends taiga.Service
|
|||
@.el.removeClass("hidden")
|
||||
return defered.promise
|
||||
|
||||
error: (message) ->
|
||||
@.el = angular.element(".lightbox-generic-error")
|
||||
|
||||
# Render content
|
||||
@.el.find("h2.title").html(message)
|
||||
defered = @q.defer()
|
||||
|
||||
# Assign event handlers
|
||||
@.el.on "click.confirm-dialog", "a.button-green", (event) =>
|
||||
event.preventDefault()
|
||||
defered.resolve()
|
||||
@.hide()
|
||||
|
||||
@.el.removeClass("hidden")
|
||||
return defered.promise
|
||||
|
||||
|
||||
module = angular.module("taigaBase")
|
||||
module.service("$tgConfirm", ["$q", ConfirmService])
|
||||
|
|
|
@ -13,5 +13,7 @@ html(lang="en", ng-app="taiga")
|
|||
div.master(ng-view="")
|
||||
div.hidden.lightbox.lightbox_confirm-delete
|
||||
include partials/views/modules/lightbox_confirm-delete
|
||||
div.hidden.lightbox.lightbox-generic-error
|
||||
include partials/views/modules/lightbox-generic-error
|
||||
script(src="/js/libs.js?v=#{v}")
|
||||
script(src="/js/app.js?v=#{v}")
|
||||
|
|
|
@ -17,6 +17,6 @@ block content
|
|||
a.icon.icon-delete(href="", title="Close message")
|
||||
|
||||
include views/modules/login-form
|
||||
include views/modules/register-form
|
||||
include views/modules/forgot-form
|
||||
include views/modules/reset-pass
|
||||
// include views/modules/register-form
|
||||
// include views/modules/forgot-form
|
||||
// include views/modules/reset-pass
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
extends dummy-layout
|
||||
//extends login-layout
|
||||
|
||||
block head
|
||||
title Taiga Project management web application with scrum in mind!
|
||||
|
||||
block content
|
||||
div.wrapper(ng-controller="AuthController as ctrl")
|
||||
div.login-main
|
||||
div.login-container
|
||||
h1.logo
|
||||
img(src="/images/logo.png", alt="TAIGA")
|
||||
p.tagline Project management web application with scrum in mind!
|
||||
p.login-error
|
||||
span.title Ooops! Something went wrong!
|
||||
span.text According to our Oompa Loompas, your username or password are incorrect.
|
||||
a.icon.icon-delete(href="", title="Close message")
|
||||
|
||||
include views/modules/register-form
|
|
@ -0,0 +1,7 @@
|
|||
a.close(href="", title="close")
|
||||
span.icon.icon-delete
|
||||
section
|
||||
h2.title
|
||||
div.delete-options
|
||||
a.button.button-green(href="", title="Accept")
|
||||
span Accept
|
|
@ -1,5 +1,5 @@
|
|||
div.login-form-container
|
||||
form.login-form
|
||||
form.login-form(ng-submit="ctrl.submit()")
|
||||
fieldset
|
||||
input(type="text", name="username", ng-model="form.username", placeholder="User name")
|
||||
fieldset.login-password
|
||||
|
@ -9,8 +9,11 @@ div.login-form-container
|
|||
fieldset
|
||||
input.remember-me(type="checkbox", checked="checked", id="remember-me")
|
||||
label(for="remember-me") remember me on this computer
|
||||
|
||||
fieldset
|
||||
a.button.button-login.button-gray(href="", ng-click="ctrl.submit()", title="Log in") Enter
|
||||
input(type="submit", class="hidden")
|
||||
|
||||
p.login-text
|
||||
span Not registered yet?
|
||||
a(href="", title="Register") create your free account here
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
div.register-form-container
|
||||
div.register-form-container(tg-register)
|
||||
form.register-form
|
||||
fieldset
|
||||
input(type="text" placeholder="Pick a username")
|
||||
input(type="text", placeholder="Pick a username", ng-model="data.username",
|
||||
data-required="true")
|
||||
fieldset
|
||||
input(type="text" placeholder="Your email")
|
||||
input(type="text", placeholder="Your email", ng-model="data.email", data-required="true")
|
||||
fieldset
|
||||
input(type="password" placeholder="Set a password")
|
||||
input(type="password" placeholder="Set a password", ng-model="data.password",
|
||||
data-required="true")
|
||||
fieldset
|
||||
a.button.button-register.button-gray(href="", title="Sign up") Sign up
|
||||
input(type="submit", class="hidden")
|
||||
|
||||
p.register-text
|
||||
span By clicking "Sign up", you agree to our <br />
|
||||
a(href="", title="See terms of service") terms of service
|
||||
|
|
|
@ -238,3 +238,23 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.lightbox-generic-error {
|
||||
section {
|
||||
flex-basis: 0;
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
min-width: 420px;
|
||||
width: 420px;
|
||||
}
|
||||
.delete-options {
|
||||
@include table-flex();
|
||||
a {
|
||||
@include table-flex-child(1, 0, 0);
|
||||
padding: 8px 0;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
.register-form-container {
|
||||
display: none;
|
||||
display: block;
|
||||
}
|
||||
|
|
|
@ -53,7 +53,8 @@ paths = {
|
|||
"app/vendor/angular-animate/angular-animate.js",
|
||||
"app/vendor/i18next/i18next.js",
|
||||
"app/js/Sortable.js",
|
||||
"app/vendor/moment/min/moment-with-langs.js"
|
||||
"app/vendor/moment/min/moment-with-langs.js",
|
||||
"app/vendor/checksley/checksley.js"
|
||||
]
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue