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

« back to all changes in this revision

Viewing changes to ivle/webapp/forum/phpbb3.diff

  • Committer: drtomc
  • Date: 2007-12-04 01:57:41 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:3
A README file describing sundry bits of the platform infrastructure.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
diff -Nur a/adm/index.php b/adm/index.php
2
 
--- a/adm/index.php     2008-12-13 02:20:38.000000000 +1100
3
 
+++ b/adm/index.php     2009-02-18 11:53:53.000000000 +1100
4
 
@@ -27,12 +27,6 @@
5
 
 $user->setup('acp/common');
6
 
 // End session management
7
 
 
8
 
-// Have they authenticated (again) as an admin for this session?
9
 
-if (!isset($user->data['session_admin']) || !$user->data['session_admin'])
10
 
-{
11
 
-       login_box('', $user->lang['LOGIN_ADMIN_CONFIRM'], $user->lang['LOGIN_ADMIN_SUCCESS'], true, false);
12
 
-}
13
 
-
14
 
 // Is user any type of admin? No, then stop here, each script needs to
15
 
 // check specific permissions but this is a catchall
16
 
 if (!$auth->acl_get('a_'))
17
 
diff -Nur a/config.php b/config.php
18
 
--- a/config.php        2009-02-18 11:47:04.000000000 +1100
19
 
+++ b/config.php        2009-02-18 12:21:14.000000000 +1100
20
 
@@ -11,6 +11,8 @@
21
 
 $acm_type = 'file';
22
 
 $load_extensions = '';
23
 
 
24
 
+$ivle_secret = '<FORUM SECRET>';
25
 
+
26
 
 @define('PHPBB_INSTALLED', true);
27
 
 // @define('DEBUG', true);
28
 
 // @define('DEBUG_EXTRA', true);
29
 
diff -Nur a/includes/session.php b/includes/session.php
30
 
--- a/includes/session.php      2008-12-13 02:20:37.000000000 +1100
31
 
+++ b/includes/session.php      2009-02-18 12:32:37.000000000 +1100
32
 
@@ -296,6 +296,13 @@
33
 
                        $this->data = $db->sql_fetchrow($result);
34
 
                        $db->sql_freeresult($result);
35
 
 
36
 
+                       // IVLE SSO
37
 
+                       $ivle_userid = $this->ivle_auth();
38
 
+                       if ($ivle_userid && ($ivle_userid != $this->data['user_id']))
39
 
+                       {
40
 
+                               return $this->session_create($ivle_userid);
41
 
+                       }
42
 
+
43
 
                        // Did the session exist in the DB?
44
 
                        if (isset($this->data['user_id']))
45
 
                        {
46
 
@@ -2228,6 +2235,135 @@
47
 
                        return $var;
48
 
                }
49
 
        }
50
 
+
51
 
+       /** IVLE SSO
52
 
+        * This function attempts to authenticate from a signed cookie provided by 
53
 
+        * IVLE. If it does it will return either the forum user_id for the logged in 
54
 
+        * IVLE user or will create a new one on-the-fly.
55
 
+        * 
56
 
+        * If the cookie is bad, the ANONYMOUS user will be returned.
57
 
+        */
58
 
+       function ivle_auth()
59
 
+       {
60
 
+               global $db, $phpbb_root_path, $phpEx;
61
 
+
62
 
+               // Get the IVLE shared secret from config.php.
63
 
+               require($phpbb_root_path . 'config.' . $phpEx);
64
 
+
65
 
+               // Shared Cookie
66
 
+               $ivle_cookie = explode(':',$_COOKIE['ivleforumcookie']);
67
 
+        
68
 
+               if ($ivle_cookie == "NONE") {
69
 
+                       return ANONYMOUS;
70
 
+               }
71
 
+
72
 
+               // Decode and unescape the Cookie contents
73
 
+               $ivle_uid = urldecode($ivle_cookie[0]);
74
 
+               $ivle_nick = urldecode($ivle_cookie[1]);
75
 
+               $ivle_email = urldecode($ivle_cookie[2]);
76
 
+               $ivle_role = urldecode($ivle_cookie[3]);
77
 
+               $ivle_hash = $ivle_cookie[4];
78
 
+
79
 
+               // Check if uid + nick + email + secret is the same as the hash
80
 
+               if(md5($ivle_cookie[0].$ivle_cookie[1].$ivle_cookie[2].
81
 
+                      $ivle_cookie[3].$ivle_secret) == $ivle_hash)
82
 
+               {
83
 
+                       // Check if the user exists in the database
84
 
+                       $sql = 'SELECT user_id
85
 
+                               FROM ' . USERS_TABLE . "
86
 
+                               WHERE username = '" . $db->sql_escape($ivle_uid) . "';";
87
 
+                               $result = $db->sql_query($sql);
88
 
+                               $row = $db->sql_fetchrow($result);
89
 
+                               $user_id = $row['user_id'];
90
 
+                               $db->sql_freeresult($result);
91
 
+
92
 
+                       // If no user_id is found for the username, create a new user
93
 
+                       if(!$user_id)
94
 
+                       {
95
 
+                               // Needed for IVLE auth overide
96
 
+                               include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
97
 
+                  
98
 
+                               // Add all users to the Registered Group
99
 
+                               $sql = 'SELECT group_id
100
 
+                                       FROM ' . GROUPS_TABLE . "
101
 
+                                       WHERE group_name = '" . $db->sql_escape('REGISTERED') . "'
102
 
+                                       AND group_type = " . GROUP_SPECIAL;
103
 
+                               $result = $db->sql_query($sql);
104
 
+                               $row = $db->sql_fetchrow($result);
105
 
+                               $db->sql_freeresult($result);
106
 
+                               if (!$row)
107
 
+                               {
108
 
+                                       trigger_error('NO_GROUP');
109
 
+                               }
110
 
+
111
 
+                               $group_id = $row['group_id'];
112
 
+
113
 
+                               // Get the Time and Timezone
114
 
+                               $timezone = date('Z') / 3600;
115
 
+                               $is_dst = date('I');
116
 
+                               $timezone = ($is_dst) ? $timezone - 1 : $timezone;
117
 
+                               
118
 
+                               // Fill into array
119
 
+                               $user_row = array(
120
 
+                                       'username'              => $ivle_uid,
121
 
+                                       'user_password'         => '', # Not a valid hash
122
 
+                                       'user_email'            => $ivle_email,
123
 
+                                       'group_id'              => (int) $group_id,
124
 
+                                       'user_timezone'         => (float) $timezone,
125
 
+                                       'user_dst'              => $is_dst,
126
 
+                                       'user_lang'             => 'en',
127
 
+                                       'user_type'             => USER_NORMAL,
128
 
+                                       'user_actkey'           => '',
129
 
+                                       'user_ip'               => $this->ip,
130
 
+                                       'user_regdate'          => time(),
131
 
+                                       'user_inactive_reason'  => 0,
132
 
+                                       'user_inactive_time'    => 0,
133
 
+                               );
134
 
+                        
135
 
+                               // Add user
136
 
+                               $user_id = user_add($user_row);
137
 
+
138
 
+                               // Add any aditional groups
139
 
+                               // Select the equvialent group
140
 
+                               $group = False;
141
 
+                               switch($ivle_role)
142
 
+                               {
143
 
+                                       case('admin'):
144
 
+                                               $group = 'ADMINISTRATORS';
145
 
+                                               break;
146
 
+                                       case('lecturer'):
147
 
+                                               $group = 'GLOBAL_MODERATORS';
148
 
+                                               break;
149
 
+                               }
150
 
+                               if ($group)
151
 
+                               {
152
 
+                                       // Find the group_id
153
 
+                                       $sql = 'SELECT group_id
154
 
+                                               FROM ' . GROUPS_TABLE . "
155
 
+                                               WHERE group_name = '" . $db->sql_escape($group) . "'
156
 
+                                               AND group_type = " . GROUP_SPECIAL;
157
 
+                                       
158
 
+                                       $result = $db->sql_query($sql);
159
 
+                                       $row = $db->sql_fetchrow($result);
160
 
+                                       $db->sql_freeresult($result);
161
 
+
162
 
+                                       if (!$row)
163
 
+                                       {
164
 
+                                               trigger_error('NO_GROUP');
165
 
+                                       }
166
 
+
167
 
+                                       $group_id = $row['group_id'];
168
 
+
169
 
+                                       group_user_add($group_id,Array($user_id));
170
 
+                               }
171
 
+                       }
172
 
+                       return $user_id;
173
 
+               }
174
 
+               else
175
 
+               {
176
 
+                       return False;
177
 
+               }
178
 
+       }
179
 
 }
180
 
 
181
 
 ?>
182
 
diff -Nur a/styles/prosilver/template/index_body.html b/styles/prosilver/template/index_body.html
183
 
--- a/styles/prosilver/template/index_body.html 2008-12-13 02:20:37.000000000 +1100
184
 
+++ b/styles/prosilver/template/index_body.html 2009-02-18 12:05:36.000000000 +1100
185
 
@@ -14,20 +14,6 @@
186
 
 
187
 
 <!-- INCLUDE forumlist_body.html -->
188
 
 
189
 
-<!-- IF not S_USER_LOGGED_IN and not S_IS_BOT -->
190
 
-       <form method="post" action="{S_LOGIN_ACTION}" class="headerspace">
191
 
-       <h3><a href="{U_LOGIN_LOGOUT}">{L_LOGIN_LOGOUT}</a><!-- IF S_REGISTER_ENABLED -->&nbsp; &bull; &nbsp;<a href="{U_REGISTER}">{L_REGISTER}</a><!-- ENDIF --></h3>
192
 
-               <fieldset class="quick-login">
193
 
-                       <label for="username">{L_USERNAME}:</label>&nbsp;<input type="text" name="username" id="username" size="10" class="inputbox" title="{L_USERNAME}" />  
194
 
-                       <label for="password">{L_PASSWORD}:</label>&nbsp;<input type="password" name="password" id="password" size="10" class="inputbox" title="{L_PASSWORD}" />
195
 
-                       <!-- IF S_AUTOLOGIN_ENABLED -->
196
 
-                               | <label for="autologin">{L_LOG_ME_IN} <input type="checkbox" name="autologin" id="autologin" /></label>
197
 
-                       <!-- ENDIF -->
198
 
-                       <input type="submit" name="login" value="{L_LOGIN}" class="button2" />
199
 
-               </fieldset>
200
 
-       </form>
201
 
-<!-- ENDIF -->
202
 
-
203
 
 <!-- IF S_DISPLAY_ONLINE_LIST -->
204
 
        <!-- IF U_VIEWONLINE --><h3><a href="{U_VIEWONLINE}">{L_WHO_IS_ONLINE}</a></h3><!-- ELSE --><h3>{L_WHO_IS_ONLINE}</h3><!-- ENDIF -->
205
 
        <p>{TOTAL_USERS_ONLINE} ({L_ONLINE_EXPLAIN})<br />{RECORD_USERS}<br /> <br />{LOGGED_IN_USER_LIST}
206
 
diff -Nur a/styles/prosilver/template/overall_header.html b/styles/prosilver/template/overall_header.html
207
 
--- a/styles/prosilver/template/overall_header.html     2008-12-13 02:20:37.000000000 +1100
208
 
+++ b/styles/prosilver/template/overall_header.html     2009-02-18 12:06:22.000000000 +1100
209
 
@@ -151,8 +151,6 @@
210
 
                                <li class="icon-faq"><a href="{U_FAQ}" title="{L_FAQ_EXPLAIN}">{L_FAQ}</a></li>
211
 
                                <!-- IF not S_IS_BOT -->
212
 
                                        <!-- IF S_DISPLAY_MEMBERLIST --><li class="icon-members"><a href="{U_MEMBERLIST}" title="{L_MEMBERLIST_EXPLAIN}">{L_MEMBERLIST}</a></li><!-- ENDIF -->
213
 
-                                       <!-- IF not S_USER_LOGGED_IN and S_REGISTER_ENABLED --><li class="icon-register"><a href="{U_REGISTER}">{L_REGISTER}</a></li><!-- ENDIF -->
214
 
-                                       <li class="icon-logout"><a href="{U_LOGIN_LOGOUT}" title="{L_LOGIN_LOGOUT}" accesskey="l">{L_LOGIN_LOGOUT}</a></li>
215
 
                                <!-- ENDIF -->
216
 
                        </ul>
217