Example #1
0
 public function process()
 {
     if (array_key_exists('state', $this->request->get) && $this->request->get['state'] == 'nux_authorization') {
         if (array_key_exists('code', $this->request->get)) {
             $details = $this->session->get('nux_add_service_details');
             $oauth2 = new Hm_Oauth2($details['client_id'], $details['client_secret'], $details['redirect_uri']);
             $result = $oauth2->request_token($details['token_uri'], $this->request->get['code']);
             if (!empty($result) && array_key_exists('access_token', $result)) {
                 Hm_IMAP_List::add(array('name' => $details['name'], 'server' => $details['server'], 'port' => $details['port'], 'tls' => $details['tls'], 'user' => $details['email'], 'pass' => $result['access_token'], 'expiration' => strtotime(sprintf("+%d seconds", $result['expires_in'])), 'refresh_token' => $result['refresh_token'], 'auth' => 'xoauth2'));
                 if (isset($details['smtp'])) {
                     Hm_SMTP_List::add(array('name' => $details['name'], 'server' => $details['smtp']['server'], 'port' => $details['smtp']['port'], 'tls' => $details['smtp']['tls'], 'auth' => 'xoauth2', 'user' => $details['email'], 'pass' => $result['access_token'], 'expiration' => strtotime(sprintf("+%d seconds", $result['expires_in'])), 'refresh_token' => $result['refresh_token']));
                     $this->session->record_unsaved('SMTP server added');
                     $smtp_servers = Hm_SMTP_List::dump(false, true);
                     $this->user_config->set('smtp_servers', $smtp_servers);
                 }
                 Hm_Msgs::add('E-mail account successfully added');
                 $servers = Hm_IMAP_List::dump(false, true);
                 $this->user_config->set('imap_servers', $servers);
                 Hm_IMAP_List::clean_up();
                 $user_data = $this->user_config->dump();
                 if (!empty($user_data)) {
                     $this->session->set('user_data', $user_data);
                 }
                 $this->session->del('nux_add_service_details');
                 $this->session->record_unsaved('IMAP server added');
                 $this->session->secure_cookie($this->request, 'hm_reload_folders', '1');
                 $this->session->close_early();
             } else {
                 Hm_Msgs::add('ERRAn Error Occurred');
             }
         } elseif (array_key_exists('error', $this->request->get)) {
             Hm_Msgs::add('ERR' . ucwords(str_replace('_', ' ', $this->request->get['error'])));
         } else {
             Hm_Msgs::add('ERRAn Error Occurred');
         }
         $msgs = Hm_Msgs::get();
         $this->session->secure_cookie($this->request, 'hm_msgs', base64_encode(serialize($msgs)), 0);
         Hm_Dispatch::page_redirect('?page=servers');
     }
 }
Example #2
0
 public function process()
 {
     $details = github_connect_details($this->config);
     if (!empty($details)) {
         $oauth2 = new Hm_Oauth2($details['client_id'], $details['client_secret'], $details['redirect_uri']);
         $this->out('github_auth_url', $oauth2->request_authorization_url($details['auth_url'], 'repo', 'github_authorization'));
         $this->out('github_connect_details', $this->user_config->get('github_connect_details', array()));
         $this->out('github_repos', $this->user_config->get('github_repos', array()));
     }
 }
Example #3
0
/**
 * Check for and do an Oauth2 token reset if needed
 * @param array $server imap server data
 * @param object $config site config object
 * @return mixed
 */
function smtp_refresh_oauth2_token($server, $config)
{
    if (array_key_exists('expiration', $server) && (int) $server['expiration'] <= time()) {
        $oauth2_data = get_oauth2_data($config);
        $details = array();
        if ($server['server'] == 'smtp.gmail.com') {
            $details = $oauth2_data['gmail'];
        }
        if (!empty($details)) {
            $oauth2 = new Hm_Oauth2($details['client_id'], $details['client_secret'], $details['client_uri']);
            $result = $oauth2->refresh_token($details['refresh_uri'], $server['refresh_token']);
            if (array_key_exists('access_token', $result)) {
                return array(strtotime(sprintf('+%d seconds', $result['expires_in'])), $result['access_token']);
            }
        }
    }
    return array();
}