Example #1
0
 public static function login(Request &$request)
 {
     Pea::begin_loose_syntax();
     require_once 'Auth/OpenID/Consumer.php';
     require_once 'Auth/OpenID/FileStore.php';
     require_once 'Auth/OpenID/SReg.php';
     require_once 'Auth/OpenID/PAPE.php';
     if ($request->in_vars('openid_url') != "" || $request->in_vars('openid_verify')) {
         Log::debug("begin openid auth: " . $request->in_vars('openid_url'));
         // OpenID Auth
         $consumer = new Auth_OpenID_Consumer(new Auth_OpenID_FileStore(work_path('openid')));
         if ($request->is_vars('openid_verify')) {
             $response = $consumer->complete($request->request_url());
             if ($response->status == Auth_OpenID_SUCCESS) {
                 return $response->getDisplayIdentifier();
             }
         } else {
             $auth_request = $consumer->begin($request->in_vars('openid_url'));
             if (!$auth_request) {
                 throw new RuntimeException('invalid openid url');
             }
             $sreg_request = Auth_OpenID_SRegRequest::build(array('nickname'), array('fullname', 'email'));
             if ($sreg_request) {
                 $auth_request->addExtension($sreg_request);
             }
             if ($auth_request->shouldSendRedirect()) {
                 $redirect_url = $auth_request->redirectURL(url(), $request->request_url(false) . '?openid_verify=true');
                 if (Auth_OpenID::isFailure($redirect_url)) {
                     throw new RuntimeException("Could not redirect to server: {$redirect_url->message}");
                 } else {
                     $request->redirect($redirect_url);
                 }
             } else {
                 $form_html = $auth_request->htmlMarkup(url(), $request->request_url(false) . '?openid_verify=true', false, array('id' => 'openid_message'));
                 if (Auth_OpenID::isFailure($form_html)) {
                     throw new RuntimeException("Could not redirect to server: {$form_html->message}");
                 } else {
                     echo $form_html;
                     exit;
                 }
             }
         }
     }
     Pea::end_loose_syntax();
     return null;
 }
 /**
  * 既存のDBからモデルファイルを自動生成する
  **/
 public static function __setup_generate_model__(Request $request, $value)
 {
     if (!$request->is_vars('tables')) {
         throw new RuntimeException('tables required');
     }
     $model_path = $request->is_vars('model_path') ? $request->in_vars('model_path') : path('libs/model');
     $tables = $request->in_vars('tables');
     $tables = strpos(',', $tables) === false ? array($tables) : explode(',', $tables);
     foreach ($tables as $table) {
         $dao = Dao::instant($table, $value);
         $props = $dao->get_columns();
         $properties = array();
         foreach ($props as $prop_name) {
             $property = new ModelProperty();
             $property->name($prop_name);
             foreach (self::$anons as $a) {
                 $anon = $dao->a($prop_name, $a);
                 if (isset(self::$defaults[$prop_name]) && self::$defaults[$prop_name] == $anon) {
                     continue;
                 }
                 if (!is_null($anon)) {
                     $property->annotation($a, $anon);
                 }
             }
             $properties[] = $property;
         }
         $class_name = preg_replace('/_(.)/e', 'ucfirst("\\1")', ucfirst(strtolower($table)));
         $template = new Template();
         $template->vars('properties', $properties);
         $template->vars('class_name', $class_name);
         $filename = File::path($model_path, $class_name . '.php');
         $src = "<?php\n" . $template->read(module_templates('model.php'));
         File::write($filename, $src);
         // unset
         $dao = $template = $properties = $property = null;
         unset($dao);
         unset($template);
         unset($properties);
         unset($property);
     }
 }
 public function login_condition(Request $request)
 {
     if ($request->user() instanceof OpenpearMaintainer) {
         return true;
     }
     if ($request->is_post() && $request->is_vars('login') && $request->is_vars('password')) {
         try {
             $user = C(OpenpearMaintainer)->find_get(Q::ob(Q::b(Q::eq('name', $request->in_vars('login'))), Q::b(Q::eq('mail', $request->in_vars('login')))));
             if ($user instanceof OpenpearMaintainer) {
                 if ($user->certify($request->in_vars('password'))) {
                     $request->user($user);
                     return true;
                 } else {
                     Exceptions::add(new Exception('password is incorrect'), 'password');
                 }
             }
         } catch (Exception $e) {
             Log::debug($e);
         }
     }
     return false;
 }
Example #4
0
 /**
  * クラスモジュールを設定する
  * ex.
  *  -add_module Log -module org.rhaco.io.log.LogFile
  * 
  * @param Request $req
  * @param string $value 設定するクラス
  */
 public static function __setup_add_module__(Request $req, $value)
 {
     $module = $req->in_vars("module");
     if (empty($module) || empty($value)) {
         self::cmd_info("add_module");
     }
     $src = File::read(App::path("__settings__.php"));
     Lib::import($value);
     Lib::import($module);
     if (preg_match("/C(R([\"']" . $value . "[\"']))->add_module(R([\"']" . $module . "[\"']))/", $src, $match)) {
         $src = str_replace($match[0], sprintf('C(R("%s"))->add_module(R("%s"));', $value, $module), $src);
     } else {
         $src .= "\n" . sprintf('C(R("%s"))->add_module(R("%s"));', $value, $module);
     }
     self::update_settings($src);
 }
Example #5
0
 /**
  * Subversion リポジトリの基本ディレクトリ構成を生成する
  */
 public static function __setup_generate_skeleton__(Request $req)
 {
     $base_dir = $req->in_vars('path', OpenpearConfig::svn_skeleton(work_path('skeleton')));
     File::mkdir($base_dir);
     File::mkdir(File::path($base_dir, 'doc'));
     File::mkdir(File::path($base_dir, 'doc/en'));
     File::mkdir(File::path($base_dir, 'doc/ja'));
     File::mkdir(File::path($base_dir, 'trunk'));
     File::mkdir(File::path($base_dir, 'tags'));
     File::mkdir(File::path($base_dir, 'branches'));
     File::write(File::path($base_dir, 'doc/ja/README'), text('
         * Documentation
         このパッケージにはまだドキュメントが存在しません
     '));
     File::write(File::path($base_dir, 'doc/en/README'), text('
         * Documentation
         This package does not have any documents.
     '));
 }
Example #6
0
 /**
  * リポジトリサーバの実行
  */
 public static function handler()
 {
     Log::disable_display();
     $request = new Request("_inc_session_=false");
     if (strpos($request->args(), "/check") === 0) {
         exit;
     }
     $repository = new Repository();
     self::lib($repository);
     self::app($repository);
     Object::C(__CLASS__)->call_module("repository", $repository);
     foreach ($repository->names as $type) {
         if (preg_match("/^\\/" . $type . "\\/download\\/(.+)\$/", $request->args(), $match)) {
             if (self::is_tgz($type, $match[1], $filename)) {
                 self::dl($filename);
             }
         }
         if (preg_match("/^\\/" . $type . "\\/state\\/(.+)\$/", $request->args(), $match)) {
             if (self::is_tgz($type, $match[1], $filename)) {
                 exit;
             }
         }
         if (preg_match("/^\\/" . $type . "\\/list\$/", $request->args(), $match)) {
             print self::read_xml($type);
             exit;
         }
         if (preg_match("/^\\/" . $type . "\\/list\\/json\$/", $request->args(), $match)) {
             if (Tag::setof($tag, self::read_xml($type))) {
                 Text::output_jsonp($tag, $request->in_vars("callback"));
             }
         }
     }
     Http::status_header(403);
     exit;
 }