         drop = droplet
     }
     
-    /**
-     * Landing page
-     *
-     * - param: Request
-     * - return: Response
-     */
-    public func landing(request: Request) throws -> ResponseRepresentable {
+    
+    /// Landing
+    ///
+    /// - Parameter request: Request
+    /// - Returns: Response
+    public func landing(request: Request) -> Response {
         do {
             guard let user: BackendUser = try request.auth.user() as? BackendUser else {
                 throw Abort.custom(status: .forbidden, message: "Forbidden")

            // Send mail
            try Mailer.sendResetPasswordMail(drop: drop, backendUser: backendUser, token: token)
            
            return Response(redirect: "/admin/login").flash(.success, "E-mail with instructions sent")
        } catch {
            return Response(redirect: "/admin/login/reset").flash(.error, "Error occurred")
        }
    }
    
    /**
     * Reset password token form
     *
     * - param: Request
     * - return: ResponseRepresentable
     */
    public func resetPasswordTokenForm(request: Request) throws -> ResponseRepresentable {
        guard let tokenStr = request.parameters["token"]?.string else {
            throw Abort.custom(status: .badRequest, message: "Missing token")
        }
        
        guard let token = try BackendUserResetPasswordTokens.query().filter("token", tokenStr).first() else {
            throw Abort.custom(status: .badRequest, message: "Token does not exist")
        }
        
        if(!token.canBeUsed()) {
            throw Abort.custom(status: .badRequest, message: "Token does not exist")
        }
        
        
        return try drop.view.make("ResetPassword/form", [
            "token": token
        ], for: request)
    }
    
    /**
     * Reset password token submit
     *
     * - param: Request
     * - return: ResponseRepresentable
     */
    public func resetPasswordTokenSubmit(request: Request) throws -> ResponseRepresentable {
        guard let tokenStr = request.data["token"]?.string, let email = request.data["email"]?.string,
            let password = request.data["password"]?.string, let passwordRepeat = request.data["password_repeat"]?.string else {
                throw Abort.badRequest
        }
        
        guard var token = try BackendUserResetPasswordTokens.query().filter("token", tokenStr).first() else {
            throw Abort.custom(status: .badRequest, message: "Token does not exist")
        }
        
        if !token.canBeUsed() {
            throw Abort.custom(status: .badRequest, message: "Token does not exist")
        }
        

        }
        
        do {
            let remember: Bool = request.data["remember"]?.bool ?? false
            
            try request.auth.login(UsernamePassword(username: username, password: password), persist: remember)
            
            // Generate redirect path
            var redirect = "/admin/dashboard"
            if let next: String = request.query?["next"]?.string, !next.isEmpty {
                redirect = next
            }
        
            return Response(redirect: redirect).flash(.success, "Logged in as \(username)")
        } catch {
