source: branches/2.2/mobile/login.php @ 5054

Revision 5054, 7.7 KB checked in by alexandrecorreia, 9 years ago (diff)

Ticket #2261 - Corrigido os varios redirecionamentos no modulo mobile

Line 
1<?php
2        //TODO: Trocar name="login" para name="user" no campo username
3
4        $phpgw_info = array();
5        $submit = False;
6
7        $GLOBALS['phpgw_info']['flags'] = array(
8                'disable_Template_class' => True,
9                'login'                  => True,
10                'currentapp'             => 'login',
11                'currentdir'             => '/mobile',
12                'noheader'               => True
13        );
14       
15        include_once('../header.inc.php');
16        include_once('./mobile_header.inc.php');
17        $GLOBALS['sessionid'] = @$_GET['sessionid'] ? $_GET['sessionid'] : @$_COOKIE['sessionid'];
18
19        function check_logoutcode($code)
20        {
21                $_return = '';
22               
23                switch($code)
24                {
25                        case 'logout_mobile':
26                        case 1:
27                                logout();
28                                $_return = lang('You have been successfully logged out');
29                                break;
30                        case 2:
31                                $_return = lang('Sorry, your login has expired');
32                                break;
33                        case 4:
34                                $_return = lang('Cookies are required to login to this site.');
35                                break;
36                        case 5:
37                                $_return = lang('Bad login or password');
38                                break;
39                        case 6:
40                                $_return = lang('Your password has expired, and you do not have access to change it');
41                                break;
42                        case 98:
43                                $_return = lang('Account is expired');
44                                break;
45                        case 99:
46                                $_return = lang('Blocked, too many attempts');
47                                break;
48                        case 10:
49                                $GLOBALS['phpgw']->session->phpgw_setcookie('sessionid');
50                                $GLOBALS['phpgw']->session->phpgw_setcookie('kp3');
51                                $GLOBALS['phpgw']->session->phpgw_setcookie('domain');
52                                if($GLOBALS['phpgw_info']['server']['sessions_type'] == 'php4')
53                                {
54                                        $GLOBALS['phpgw']->session->phpgw_setcookie(PHPGW_PHPSESSID);
55                                }
56                                $_return = lang('Your session could not be verified.');
57                                break;
58                }
59               
60                return $_return;
61        }
62       
63        if ( $GLOBALS['phpgw_info']['server']['use_https'] > 0 )
64        {
65                if ($_SERVER['HTTPS'] != 'on')
66                {
67                        $proxies = explode(',',$_SERVER['HTTP_X_FORWARDED_HOST']);
68            $fwConstruct = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $proxies[0] : $_SERVER['HTTP_HOST'];
69                        Header('Location: https://' . $fwConstruct . '/' . $_SERVER['REQUEST_URI']);
70                        exit;
71                }
72        }
73
74        $GLOBALS['phpgw']->session = CreateObject('phpgwapi.sessions');
75        $GLOBALS['phpgw_info']['server']['template_dir'] = PHPGW_SERVER_ROOT.$GLOBALS['phpgw_info']['flags']['currentdir'].'/templates/'.$GLOBALS['phpgw_info']['user']['preferences']['common']['template_set'];
76        $tmpl = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
77        $GLOBALS['phpgw_info']['user']['preferences']['common']['template_set'] = $GLOBALS['phpgw_info']['login_template_set'];
78       
79        //URL Expresso
80        $url_expresso = $GLOBALS['phpgw_info']['server']['webserver_url'];
81        $url_expresso = ( !empty($url_expresso) ) ? $url_expresso : '/';
82       
83        if(strrpos($url_expresso,'/') === false || strrpos($url_expresso,'/') != (strlen($url_expresso)-1))
84        {
85                $url_expresso .= '/';
86        }
87       
88        $tmpl->set_file(array('login_form' => 'login.tpl'));
89        $tmpl->set_block('login_form','page');
90        $tmpl->set_block('login_form','success_message');
91        $tmpl->set_block('login_form','error_message');
92        $tmpl->set_var('url_expresso', $url_expresso);
93        $tmpl->set_var('lang_username', lang('username'));
94        $tmpl->set_var('lang_password', lang('password'));
95        $tmpl->set_var('lang_login', lang('login'));
96       
97        //verificando a mensagem erro ou sucesso
98        $cd = check_logoutcode($_GET['cd']);
99        $tmpl->set_var('message', $cd);
100       
101        if( trim($cd) != "" )
102        {
103                $tmpl->parse('message_box', (($_GET['cd'] == 1) ? 'success_message' : 'error_message') ,true);
104        }
105       
106        //detect if the user has a mobile browser
107        $browser        = CreateObject('phpgwapi.browser');
108        $platform       = false;
109       
110        switch ($browser->get_platform())
111        {
112                case browser::PLATFORM_IPHONE:
113                case browser::PLATFORM_IPOD:
114                case browser::PLATFORM_IPAD:
115                case browser::PLATFORM_BLACKBERRY:
116                case browser::PLATFORM_NOKIA:
117                case browser::PLATFORM_ANDROID:
118                        $platform = $browser->get_platform();
119                        break;
120        }
121
122        $tmpl->set_var('os_browser',$platform );
123
124        // Automatic login from browser cookies
125        if( get_var('lem',array('GET','COOKIE')) && get_var('pem',array('GET','COOKIE')) )
126        {
127                $submit = True;
128                $login  = base64_decode(get_var('lem',array('GET','COOKIE')));
129                $passwd = base64_decode(get_var('pem',array('GET','COOKIE')));
130                $passwd_type = 'text';
131
132                if( $_GET['cd'] == 66 )
133                {
134                        unset( $_GET['cd'] );
135                }
136        }
137        else
138        {
139                if($GLOBALS['phpgw_info']['server']['auth_type'] == 'http' && isset($_SERVER['PHP_AUTH_USER']))
140                {
141                        $submit = True;
142                        $login  = $_SERVER['PHP_AUTH_USER'];
143                        $passwd = $_SERVER['PHP_AUTH_PW'];
144                        $passwd_type = 'text';
145                }
146                else
147                {
148                        $passwd = $_POST['passwd'];
149                        $passwd_type = $_POST['passwd_type'];
150                }
151        }
152
153        if( isset($passwd_type) || $_POST['submitit_x'] || $_POST['submitit_y'] || $submit )
154        {
155                if( !get_var('pem',array('GET','COOKIE')) && getenv('REQUEST_METHOD') != 'POST'
156                        && $_SERVER['REQUEST_METHOD'] != 'POST' && !isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['SSL_CLIENT_S_DN']))
157                {
158                        $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link($GLOBALS['phpgw_info']['flags']['currentdir'].'/login.php','cd=5'));
159                }
160
161                if(!$submit)
162                {
163                        $login = $_POST['login'];
164                }
165
166                $GLOBALS['sessionid'] = $GLOBALS['phpgw']->session->create(strtolower($login),$passwd,$passwd_type,'u');
167
168                if(!isset($GLOBALS['sessionid']) || ! $GLOBALS['sessionid']){
169                        $GLOBALS['phpgw']->redirect($GLOBALS['phpgw_info']['server']['webserver_url'] .$GLOBALS['phpgw_info']['flags']['currentdir'].'/login.php?cd=' . $GLOBALS['phpgw']->session->cd_reason);
170                }
171                else
172                {
173                        if(isset($_POST['max_resolution']) && $_POST['max_resolution'] > 600)
174                        {
175                                $GLOBALS['phpgw_info']['user']['preferences']['common']['default_mobile_app'] = 'mobilemail';
176                                $GLOBALS['phpgw']->session->appsession('mobile.layout','mobile','mini_desktop');
177                        }
178                        else
179                        {
180                                $GLOBALS['phpgw']->session->appsession('mobile.layout','mobile','mini_mobile');
181                        }
182                       
183                        $preferences = $GLOBALS['phpgw']->preferences->read();
184                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail'] = $preferences['expressoMail'];
185                       
186                        if($_POST['save_login'] === 'on')
187                        {
188                                // Time to keep values into cookies
189                                $ttl = time()+15552000; // Six Months
190                                $GLOBALS['phpgw']->session->phpgw_setcookie('lem', base64_encode(strtolower($login)),$ttl); // lem = login
191                                $GLOBALS['phpgw']->session->phpgw_setcookie('pem', base64_encode($passwd), $ttl);                       // pem = password
192                        }
193                       
194                        if( isset($GLOBALS['sessionid']) )
195                        {
196                                if( $_GET['cd'] != 10 && $_GET['cd'] != 1 && $_GET['cd'] !== 'logout_mobile' && $_GET['cd'] != 66 )
197                                {
198                                        start_prefered_app();
199                                }
200                        }
201                }
202        }
203        elseif(!isset($_COOKIE['last_loginid']) || !$prefs->account_id)
204        {
205                list($lang) = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
206                $GLOBALS['phpgw_info']['user']['preferences']['common']['lang'] = $lang;
207        }
208
209        $tmpl->set_var('charset',$GLOBALS['phpgw']->translation->charset());
210        $tmpl->set_var('cookie',$last_loginid);
211        $tmpl->set_var('lang_notices', lang('notices'));
212        $tmpl->set_var('website_title', $GLOBALS['phpgw_info']['server']['site_title']);
213        $tmpl->set_var('template_set',$GLOBALS['phpgw_info']['login_template_set']);
214        $tmpl->set_var('language_select','');
215        $tmpl->set_var($var);
216        $tmpl->set_block('login_form','language_select');
217        $tmpl->pfp('loginout','page');
218
219        function logout()
220        {
221                $verified = $GLOBALS['phpgw']->session->verify();
222                if ($verified)
223                {
224                        if (file_exists($GLOBALS['phpgw_info']['server']['temp_dir'] . SEP . $GLOBALS['sessionid']))
225                        {
226                                $dh = opendir($GLOBALS['phpgw_info']['server']['temp_dir'] . SEP . $GLOBALS['sessionid']);
227                                while ($file = readdir($dh))
228                                {
229                                        if ($file != '.' && $file != '..')
230                                        {
231                                                unlink($GLOBALS['phpgw_info']['server']['temp_dir'] . SEP . $GLOBALS['sessionid'] . SEP . $file);
232                                        }
233                                }
234                                rmdir($GLOBALS['phpgw_info']['server']['temp_dir'] . SEP . $GLOBALS['sessionid']);
235                        }
236                        $GLOBALS['phpgw']->hooks->process('logout');
237                        $GLOBALS['phpgw']->session->destroy($GLOBALS['sessionid'],$GLOBALS['kp3']);
238                }
239        }
240?>
Note: See TracBrowser for help on using the repository browser.