"PHP" / Говнокод #4555 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
/**
     * Получаем права на объект.
     *
     * @param  string $fullHref
     * @param  string $method
     * @param  string $params
     * @param  string $type
     * @return object $this
     * @access public
     */

    public function getPermsHref( $object, $method = '*', $params = false, $type = 'module', $url = false )
    {
       $registr = URegistry::getInstance();
       $sql     = $registr->SQuery->getAcl();

       if ( $type == 'url' && $url )
         {
           $sql['where'] = "`o`.`type` = 'url' and `o`.`href` = '".$url."'";
           $ac_type      = 'url';
         }
       elseif ( $type == 'module' )
         {
            $sql['where'] = "(`o`.`type` = 'module') and `o`.`name` = '".$object."'";
            if ( $method != '*' )
                $sql['where'] .= ' or `o`.`href` = "'.$object.'/'.$method.'"';

            $ac_type = 'module';
         }
       else
         {
            //TODO:wtf?
         }

        $registr->db->build_query($sql)->safe_sql($ac_type, $this->gid)->exec();
        $perms = $registr->db->fetch_object();

        if ( !$perms || !$perms->permission || !$perms->groupid )
            throw new NotFoundObject();

        $this->perms       = $perms->permission;
        $this->groupObject = explode(',', $perms->groupid);
        $this->priv_lengh  = strlen($perms->permission);

        return $this;
    }

    /**
     * Проверка прав на объект
     *
     * @param  mixed $priv
     * @return array
     * @access public
     */

    public function checkPremsObject( $priv = false )
    {
        $pruf = array();
        $priv = empty($priv) ? $this->perms : $priv;

        if ( $this->priv_lengh <= 0 or !in_array($this->gid, $this->groupObject) )
            return false;

        for ( $gi = 0; $gi < $this->priv_lengh; $gi++ )
        {
            if ( in_array($priv[$gi], $this->privileges['read']) )   $pruf['read'] = true;
            if ( in_array($priv[$gi], $this->privileges['write']) )  $pruf['write'] = true;
            if ( in_array($priv[$gi], $this->privileges['delete']) ) $pruf['delete'] = true;
        }

        return $pruf;
    }

Проверка прав.
Что скажите?

Запостил: ololo ololo, (Updated )

Комментарии (16) RSS

  • мы скажим хорашо!!!!....

    кто нибудь, дайте обратный отсчет до конца каникул
    Ответить
    • лолд, я выложил это сюда, т.к. появляются ощущение, что пишу унылое гавно.
      Ответить
      • насчет унылости ощущение совершенно правильное, и из-за этого неясно говно или нет 🙂
        Ответить
    • в процессе написания, оставляю такие комментарии, чтобы в следующий раз открыть идешку и сразу увидеть где не дописал ))
      Ответить
  • $registr->db->build_query($sql)->safe_sql($ac_type, $this->gid)->exec();

    Как-то мало стрелочек, не солидно же...
    Ответить
  • Хорошо, что Вы динамически строите SQL запрос. Да еще и с массивами.
    Но лучше всего разнести SQL запрос на 20 разных классов. Часть зашить в константы, часть -- в литералы, часть просто текстом в файле и потом файл считывать.

    Тогда даже самый злобный хакер не сможет понять по Вашему коду какой SQL запрос выполняется, и Ваше приложение будет надежно.
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8