class window.PasswordCtrl extends AuthCtrl
    constructor: (@$rootScope, @$scope, @$http, @$state, @$injector, @Cookies, @Dock, @Token, @Constants) ->
        super()

        if not @Dock.hasBoard() or not @Dock.hasUserName() or not @Dock.photo or not @Dock.hasEmail
            @$state.go(@Constants.routes.home);

        @hasError = false
        @wrongPassword = false
        @errorText = ''
        @processing = false
        @helpText = 'email.password_reason'

    continue: =>
        if @$scope.passwordForm.$valid
            @hasError = false
            @wrongPassword = false
            @processing = true
            @showPreloader()
            console.log 'PasswordCtrl#continue password = ', @Dock.data.userInfo.password
            @getToken()
        else
            @hasError = true

    onToken: (data) =>
        console.log 'PasswordCtrl#onToken', data
        @Dock.setUserToken('token '+data.token)
        @Dock.setApiRestriction(data.restrict_api_access)
        #don't set the cookie just yet, in case updating the user doesn't work
        @Dock.data.userInfo.password = ''

        if @$rootScope.returnTo
          @$state.go(@$rootScope.returnTo.route, @$rootScope.returnTo.params)



    onTokenError: (error) =>
        console.log error if DEBUG
        @incorrectPassword = true
        @showError('email.token_error')

    onUpdateUserError: (error, status) =>
        console.log "error when trying to update user "+status if DEBUG
        console.log error if DEBUG
        @helpText = ''
        @errorText = ''
        if status == 422
            @errorText = @formatErrors(error.errors)
        else
            @helpText = 'email.403_error'
        @showError(@helpText)

    showError: (helpText) =>
        @hidePreloader()
        @Dock.data.userInfo.password = '';
        @processing = false
        @helpText = helpText
        @wrongPassword = true
        @hasError = true


PasswordCtrl.$inject = ["$rootScope", "$scope", "$http", "$state", "$injector", "Cookies", "Dock", "Token", "Constants"]

angular.module("shuttlerockApp").controller("PasswordCtrl", PasswordCtrl)