wow, i just pulled a repo via git from this interface... its
[gwvp.git] / gwvplib / gwvpauth.php
1 <?php
2
3 // we call it 00aaa so it gets called first
4 $CALL_ME_FUNCTIONS["00aaa"] = "gwvp_AuthCallMe";
5
6 function gwvp_AuthCallMe()
7 {
8         global $LOGIN_TYPE;
9         session_start();
10
11         if(isset($_REQUEST["q"])) {
12                 $query = $_REQUEST["q"];
13                 if($query == "login") return "gwvp_AuthHandleLogin";
14                 if($query == "logout") return "gwvp_AuthHandleLogout";
15                 if($query == "register") return "gwvp_RegistrationCall";
16         }
17         $login = gwvp_isLoggedIn();
18         
19         error_log("authcallme as $login");
20         if($login!== false) {
21                 if(gwvp_IsUserAdmin(null, $login)) {
22                         $LOGIN_TYPE = "admin";
23                 } else {
24                         $LOGIN_TYPE = "user";
25                 }
26         } else {
27                 $LOGIN_TYPE = "anon";
28         }
29         
30         return false;
31 }
32
33 function gwvp_AskForBasicAuth()
34 {
35         if(!isset($_SERVER["PHP_AUTH_USER"])) {
36                 header('WWW-Authenticate: Basic realm="My Realm"');
37                 header('HTTP/1.0 401 Unauthorized');
38                 exit(0);
39         } else return; 
40 }
41
42 // $levels is checked against $LOGIN_TYPE, levels can be either just "admin" or admin,user anon,user anon, etc.
43 function gwvp_CheckAuthLevel($levels)
44 {
45         global $LOGIN_TYPE;
46         
47         $spl = explode(",", $levels);
48         foreach($spl as $levs) {
49                 if($LOGIN_TYPE == $levs) {
50                         return true;
51                 }
52         }
53         
54         return false;
55 }
56
57 function gwvp_fourZeroThree()
58 {
59         header("HTTP/1.0 403 Permission Denied");
60         exit(0);
61 }
62
63 function gwvp_AuthNoPerms()
64 {
65         gwvp_goMainPage("gwvp_AuthNoPermsBody");
66 }
67
68 function gwvp_AuthNoPermsBody()
69 {
70         echo "You have no permissions for this page, do you need to login?";
71 }
72
73 function gwvp_AuthHandleLogout()
74 {
75         global $BASE_URL;
76         
77         unset($_SESSION["isloggedin"]);
78         unset($_SESSION["username"]);
79         unset($_SESSION["fullname"]);
80         unset($_SESSION["usertype"]);
81         
82         gwvp_SendMessage("info", "Logged out");
83         header("Location: $BASE_URL");
84 }
85
86 function gwvp_RegistrationCall()
87 {
88         if(gwvp_IsRegistrationEnabled()) {
89                 gwvp_goMainPage("gwvp_RegistrationPageBody");
90         } else {
91                 gwvp_goMainPage("gwvp_RegistrationDisabledBody");
92         }
93 }
94
95 function gwvp_authUserPass($user, $pass)
96 {
97         $details = gwvp_getUser($user);
98         if($details == false) {
99                 return false;
100         }
101         
102         if(sha1($pass)!=$details["password"]) return false;
103         
104         return $details["username"];
105 }
106
107 function gwvp_AuthHandleLogin()
108 {
109         global $BASE_URL;
110
111         $user = "";
112         $pass = "";
113         if(isset($_REQUEST["username"])) $user = $_REQUEST["username"];
114         if(isset($_REQUEST["password"])) $pass = $_REQUEST["password"];
115
116         if(gwvp_authUserPass($user, $pass) === false) {
117                 gwvp_SendMessage("error", "Login Failed");
118                 header("Location: $BASE_URL");
119         } else {
120                 $_SESSION["isloggedin"] = true;
121                 $_SESSION["username"] = "$user";
122                 $_SESSION["fullname"] = $details["fullname"];
123                 if(gwvp_IsUserAdmin($details["email"])) {
124                         $_SESSION["usertype"] = "admin";
125                 } else {
126                         $_SESSION["usertype"] = "user";
127                 }
128                 gwvp_SendMessage("info", "Welcome, ".$details["fullname"]." you are logged in");
129                 header("Location: $BASE_URL");
130                 return true;
131         }
132
133 }
134
135 function gwvp_RegistrationPageBody()
136 {
137         ?>
138 <form method="post">
139         <table>
140                 <tr>
141                         <td>Name</td>
142                         <td><input name="name" type="text"></td>
143                         <td>Your Full Name</td>
144                 </tr>
145                 <tr>
146                         <td>Email</td>
147                         <td><input name="email" type="text"></td>
148                         <td>Your Email Address</td>
149                 </tr>
150                 <tr>
151                         <td>User Name</td>
152                         <td><input name="username" type="text"></td>
153                         <td>The Name Used to Refer to you on the site</td>
154                 </tr>
155                 <tr>
156                         <td><input type="submit" name="register" value="Register"></td>
157                 </tr>
158         </table>
159 </form>
160         <?php
161 }
162
163 function gwvp_checkBasicAuthLogin()
164 {
165         $user = false;
166         $pass = false;
167         if(isset($_SERVER["PHP_AUTH_USER"])) {
168                 $user = $_SERVER["PHP_AUTH_USER"];
169         } else return false;
170         
171         if(isset($_SERVER["PHP_AUTH_PW"])) {
172                 $pass = $_SERVER["PHP_AUTH_PW"];
173         } else return false;
174         
175         return gwvp_authUserPass($user, $pass);
176 }
177
178 function gwvp_IsLoggedIn()
179 {
180         if(isset($_SESSION["isloggedin"])) {
181                 if($_SESSION["isloggedin"]) {
182                         return $_SESSION["username"];
183                 } else return false;
184         } else return false;
185 }
186
187 function gwvp_SingleLineLoginForm()
188 {
189         global $BASE_URL;
190
191         echo "<form method=\"post\" action=\"$BASE_URL/login\">Username <input type=\"text\" name=\"username\" class=\"login\">";
192         echo " Passowrd <input type=\"text\" name=\"password\" class=\"login\"><input type=\"submit\" name=\"login\" value=\"Login\" class=\"loginbutton\">";
193         if(gwvp_IsRegistrationEnabled()) echo "<a href=\"$BASE_URL/register\">Register</a></form>";
194         else echo "</form>";
195 }
196
197
198 function gwvp_IsRegistrationEnabled()
199 {
200         return true;
201 }
202
203 // TODO translate info here
204 function gwvp_GetFullName($login)
205 {
206         return $login;
207 }
208 ?>