Changeset 222


Ignore:
Timestamp:
07/21/09 16:33:57 (8 years ago)
Author:
sander
Message:

Set request limits for users

Location:
trunk/server/www/app
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/server/www/app/config/core.php.default

    r203 r222  
    242242 */ 
    243243        Configure::write('Auth.limitRegister', false); 
     244/** 
     245 * Limit the number of requests for anonymous users 
     246 */ 
     247        Configure::write('Request.limitAnonymous', 5); 
     248/** 
     249 * Limit the number of requests for registered users 
     250 */ 
     251        Configure::write('Request.limitRegistered', 25); 
    244252/** 
    245253 * Number of seconds until a request expires 
  • trunk/server/www/app/config/sql/schema.php

    r221 r222  
    11<?php  
    22/* SVN FILE: $Id$ */ 
    3 /* App schema generated on: 2009-07-21 15:07:35 : 1248182195*/ 
     3/* App schema generated on: 2009-07-21 15:07:32 : 1248183092*/ 
    44class AppSchema extends CakeSchema { 
    55        var $name = 'App'; 
     
    5858                        'id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36, 'key' => 'primary'), 
    5959                        'name' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 40), 
     60                        'request_limit' => array('type' => 'integer', 'null' => false, 'default' => NULL, 'length' => 5), 
    6061                        'created' => array('type' => 'datetime', 'null' => true, 'default' => NULL), 
    6162                        'modified' => array('type' => 'datetime', 'null' => true, 'default' => NULL), 
  • trunk/server/www/app/controllers/requests_controller.php

    r221 r222  
    3131 
    3232        /** @var array Add Request and Worker model */ 
    33         public $uses = array('Request', 'Worker', 'Mimetype'); 
     33        public $uses = array('Request', 'Worker', 'Mimetype', 'User'); 
    3434 
    3535        /** @var array Set default sort order for paginate */ 
     
    120120        { 
    121121                if (!empty($this->data)) { 
     122                        // Access control 
    122123                        if (!Configure::read('Auth.allowAnonymous') && !$this->AuthCert->user()) { 
    123124                                $this->Session->setFlash(__('You are not allowed to submit requests anonymously.', true)); 
    124125                                $this->redirect(array('action'=>'add')); 
     126                        } 
     127 
     128                        // Check the daily request limits 
     129                        if ($user = $this->AuthCert->user()) { 
     130                                $requestLimit = Configure::read('Request.limitRegistered'); 
     131 
     132                                $user = $this->User->find(array('User.id' => $user['User']['id'])); 
     133                                $limits = Set::extract('/Group/request_limit', $user); 
     134                                $limits[] = $requestLimit; 
     135                                $requestLimit = max($limits); 
     136 
     137                                $numRequests = $this->Request->find('count', array( 
     138                                        'conditions' => array( 
     139                                                'Request.user_id' => $user['User']['id'], 
     140                                                'Request.created >' => date('Y-m-d H:i:s', strtotime('-1 day')) 
     141                                        ) 
     142                                )); 
     143 
     144                                if ($numRequests > $requestLimit) { 
     145                                        $this->Session->setFlash(sprintf(__('You have exceeded your quota of %d daily requests.', true), $requestLimit)); 
     146                                        $this->redirect(array('action'=>'add')); 
     147                                } 
     148                        } else { 
     149                                $requestLimit = Configure::read('Request.limitAnonymous'); 
     150                                $numRequests = $this->Request->find('count', array( 
     151                                        'conditions' => array( 
     152                                                'Request.ip_address' => inet_ptod($this->RequestHandler->getClientIP()), 
     153                                                'Request.created >' => date('Y-m-d H:i:s', strtotime('-1 day')) 
     154                                        ) 
     155                                )); 
     156 
     157                                if ($numRequests > $requestLimit) { 
     158                                        $this->Session->setFlash(sprintf(__('You have exceeded your quota of %d daily requests.', true), $requestLimit)); 
     159                                        $this->redirect(array('action'=>'add')); 
     160                                } 
    125161                        } 
    126162 
  • trunk/server/www/app/views/groups/admin_edit.ctp

    r108 r222  
    1313                echo $form->input('id'); 
    1414                echo $form->input('name'); 
     15                echo $form->input('request_limit'); 
    1516        ?> 
    1617        </fieldset> 
  • trunk/server/www/app/views/groups/admin_index.ctp

    r108 r222  
    1010<tr> 
    1111        <th><?php echo $paginator->sort('name');?></th> 
     12        <th><?php echo $paginator->sort('request_limit');?></th> 
    1213        <th><?php __('Number of members'); ?></th> 
    1314        <th><?php echo $paginator->sort('created');?></th> 
     
    2627                <td> 
    2728                        <?php echo $html->link($group['Group']['name'], array('action'=>'view', $group['Group']['id'])); ?> 
     29                </td> 
     30                <td> 
     31                        <?php echo $group['Group']['request_limit']; ?> 
    2832                </td> 
    2933                <td> 
  • trunk/server/www/app/views/groups/admin_view.ctp

    r110 r222  
    55                <dd<?php if ($i++ % 2 == 0) echo $class;?>> 
    66                        <?php echo $group['Group']['name']; ?> 
     7                        &nbsp; 
     8                </dd> 
     9                <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Request limit'); ?></dt> 
     10                <dd<?php if ($i++ % 2 == 0) echo $class;?>> 
     11                        <?php echo $group['Group']['request_limit']; ?> 
    712                        &nbsp; 
    813                </dd> 
Note: See TracChangeset for help on using the changeset viewer.