~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/php/phpBB3/includes/auth/auth_apache.php

  • Committer: dcoles
  • Date: 2008-02-13 04:10:55 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:443
Added Forum application along with unmodifed version of phpBB3 "Olympus" 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
/**
 
3
* Apache auth plug-in for phpBB3
 
4
*
 
5
* Authentication plug-ins is largely down to Sergey Kanareykin, our thanks to him.
 
6
*
 
7
* @package login
 
8
* @version $Id: auth_apache.php,v 1.18 2007/10/05 12:42:06 acydburn Exp $
 
9
* @copyright (c) 2005 phpBB Group
 
10
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
 
11
*
 
12
*/
 
13
 
 
14
/**
 
15
* @ignore
 
16
*/
 
17
if (!defined('IN_PHPBB'))
 
18
{
 
19
        exit;
 
20
}
 
21
 
 
22
/**
 
23
* Checks whether the user is identified to apache
 
24
* Only allow changing authentication to apache if the user is identified
 
25
* Called in acp_board while setting authentication plugins
 
26
*
 
27
* @return boolean|string false if the user is identified and else an error message
 
28
*/
 
29
function init_apache()
 
30
{
 
31
        global $user;
 
32
 
 
33
        if (!isset($_SERVER['PHP_AUTH_USER']) || $user->data['username'] !== $_SERVER['PHP_AUTH_USER'])
 
34
        {
 
35
                return $user->lang['APACHE_SETUP_BEFORE_USE'];
 
36
        }
 
37
        return false;
 
38
}
 
39
 
 
40
/**
 
41
* Login function
 
42
*/
 
43
function login_apache(&$username, &$password)
 
44
{
 
45
        global $db;
 
46
 
 
47
        // do not allow empty password
 
48
        if (!$password)
 
49
        {
 
50
                return array(
 
51
                        'status'        => LOGIN_BREAK,
 
52
                        'error_msg'     => 'NO_PASSWORD_SUPPLIED',
 
53
                );
 
54
        }
 
55
 
 
56
        if (!isset($_SERVER['PHP_AUTH_USER']))
 
57
        {
 
58
                return array(
 
59
                        'status'                => LOGIN_ERROR_EXTERNAL_AUTH,
 
60
                        'error_msg'             => 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE',
 
61
                        'user_row'              => array('user_id' => ANONYMOUS),
 
62
                );
 
63
        }
 
64
 
 
65
        $php_auth_user = $_SERVER['PHP_AUTH_USER'];
 
66
        $php_auth_pw = $_SERVER['PHP_AUTH_PW'];
 
67
 
 
68
        if (!empty($php_auth_user) && !empty($php_auth_pw))
 
69
        {
 
70
                if ($php_auth_user !== $username)
 
71
                {
 
72
                        return array(
 
73
                                'status'        => LOGIN_ERROR_USERNAME,
 
74
                                'error_msg'     => 'LOGIN_ERROR_USERNAME',
 
75
                                'user_row'      => array('user_id' => ANONYMOUS),
 
76
                        );
 
77
                }
 
78
 
 
79
                $sql = 'SELECT user_id, username, user_password, user_passchg, user_email, user_type
 
80
                        FROM ' . USERS_TABLE . "
 
81
                        WHERE username = '" . $db->sql_escape($php_auth_user) . "'";
 
82
                $result = $db->sql_query($sql);
 
83
                $row = $db->sql_fetchrow($result);
 
84
                $db->sql_freeresult($result);
 
85
 
 
86
                if ($row)
 
87
                {
 
88
                        // User inactive...
 
89
                        if ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE)
 
90
                        {
 
91
                                return array(
 
92
                                        'status'                => LOGIN_ERROR_ACTIVE,
 
93
                                        'error_msg'             => 'ACTIVE_ERROR',
 
94
                                        'user_row'              => $row,
 
95
                                );
 
96
                        }
 
97
        
 
98
                        // Successful login...
 
99
                        return array(
 
100
                                'status'                => LOGIN_SUCCESS,
 
101
                                'error_msg'             => false,
 
102
                                'user_row'              => $row,
 
103
                        );
 
104
                }
 
105
 
 
106
                // this is the user's first login so create an empty profile
 
107
                return array(
 
108
                        'status'                => LOGIN_SUCCESS_CREATE_PROFILE,
 
109
                        'error_msg'             => false,
 
110
                        'user_row'              => user_row_apache($php_auth_user, $php_auth_pw),
 
111
                );
 
112
        }
 
113
 
 
114
        // Not logged into apache
 
115
        return array(
 
116
                'status'                => LOGIN_ERROR_EXTERNAL_AUTH,
 
117
                'error_msg'             => 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE',
 
118
                'user_row'              => array('user_id' => ANONYMOUS),
 
119
        );
 
120
}
 
121
 
 
122
/**
 
123
* Autologin function
 
124
*
 
125
* @return array containing the user row or empty if no auto login should take place
 
126
*/
 
127
function autologin_apache()
 
128
{
 
129
        global $db;
 
130
 
 
131
        if (!isset($_SERVER['PHP_AUTH_USER']))
 
132
        {
 
133
                return array();
 
134
        }
 
135
 
 
136
        $php_auth_user = $_SERVER['PHP_AUTH_USER'];
 
137
        $php_auth_pw = $_SERVER['PHP_AUTH_PW'];
 
138
 
 
139
        if (!empty($php_auth_user) && !empty($php_auth_pw))
 
140
        {
 
141
                set_var($php_auth_user, $php_auth_user, 'string');
 
142
                set_var($php_auth_pw, $php_auth_pw, 'string');
 
143
 
 
144
                $sql = 'SELECT *
 
145
                        FROM ' . USERS_TABLE . "
 
146
                        WHERE username = '" . $db->sql_escape($php_auth_user) . "'";
 
147
                $result = $db->sql_query($sql);
 
148
                $row = $db->sql_fetchrow($result);
 
149
                $db->sql_freeresult($result);
 
150
 
 
151
                if ($row)
 
152
                {
 
153
                        return ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE) ? array() : $row;
 
154
                }
 
155
 
 
156
                if (!function_exists('user_add'))
 
157
                {
 
158
                        global $phpbb_root_path, $phpEx;
 
159
 
 
160
                        include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
 
161
                }
 
162
 
 
163
                // create the user if he does not exist yet
 
164
                user_add(user_row_apache($php_auth_user, $php_auth_pw));
 
165
 
 
166
                $sql = 'SELECT *
 
167
                        FROM ' . USERS_TABLE . "
 
168
                        WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($php_auth_user)) . "'";
 
169
                $result = $db->sql_query($sql);
 
170
                $row = $db->sql_fetchrow($result);
 
171
                $db->sql_freeresult($result);
 
172
 
 
173
                if ($row)
 
174
                {
 
175
                        return $row;
 
176
                }
 
177
        }
 
178
 
 
179
        return array();
 
180
}
 
181
 
 
182
/**
 
183
* This function generates an array which can be passed to the user_add function in order to create a user
 
184
*/
 
185
function user_row_apache($username, $password)
 
186
{
 
187
        global $db, $config, $user;
 
188
        // first retrieve default group id
 
189
        $sql = 'SELECT group_id
 
190
                FROM ' . GROUPS_TABLE . "
 
191
                WHERE group_name = '" . $db->sql_escape('REGISTERED') . "'
 
192
                        AND group_type = " . GROUP_SPECIAL;
 
193
        $result = $db->sql_query($sql);
 
194
        $row = $db->sql_fetchrow($result);
 
195
        $db->sql_freeresult($result);
 
196
 
 
197
        if (!$row)
 
198
        {
 
199
                trigger_error('NO_GROUP');
 
200
        }
 
201
 
 
202
        // generate user account data
 
203
        return array(
 
204
                'username'              => $username,
 
205
                'user_password' => phpbb_hash($password),
 
206
                'user_email'    => '',
 
207
                'group_id'              => (int) $row['group_id'],
 
208
                'user_type'             => USER_NORMAL,
 
209
                'user_ip'               => $user->ip,
 
210
        );
 
211
}
 
212
 
 
213
/**
 
214
* The session validation function checks whether the user is still logged in
 
215
*
 
216
* @return boolean true if the given user is authenticated or false if the session should be closed
 
217
*/
 
218
function validate_session_apache(&$user)
 
219
{
 
220
        if (!isset($_SERVER['PHP_AUTH_USER']))
 
221
        {
 
222
                return false;
 
223
        }
 
224
 
 
225
        $php_auth_user = '';
 
226
        set_var($php_auth_user, $_SERVER['PHP_AUTH_USER'], 'string');
 
227
 
 
228
        return ($php_auth_user === $user['username']) ? true : false;
 
229
}
 
230
 
 
231
?>
 
 
b'\\ No newline at end of file'