1 /*
2  * Copyright (C) 2011 Emweb bv, Herent, Belgium.
3  *
4  * See the LICENSE file for terms of use.
5  */
6 
7 #include "Login.h"
8 
9 namespace Wt {
10   namespace Auth {
11 
Login()12 Login::Login()
13   : state_(LoginState::LoggedOut)
14 { }
15 
login(const User & user,LoginState state)16 void Login::login(const User& user, LoginState state)
17 {
18   if (state == LoginState::LoggedOut || !user.isValid()) {
19     logout();
20     return;
21   } else {
22     if (state != LoginState::Disabled && user.status() == AccountStatus::Disabled)
23       state = LoginState::Disabled;
24 
25     if (user != user_) {
26       user_ = user;
27       state_ = state;
28       changed_.emit();
29     } else if (state != state_) {
30       state_ = state;
31       changed_.emit();
32     }
33   }
34 }
35 
logout()36 void Login::logout()
37 {
38   if (user_.isValid()) {
39     user_ = User();
40     state_ = LoginState::LoggedOut;
41     changed_.emit();
42   }
43 }
44 
state()45 LoginState Login::state() const
46 {
47   return state_;
48 }
49 
loggedIn()50 bool Login::loggedIn() const
51 {
52   return user_.isValid() && state_ != LoginState::Disabled;
53 }
54 
user()55 const User& Login::user() const
56 {
57   return user_;
58 }
59 
60   }
61 }
62