UsersTable.php 3.53 KB
<?php
namespace App\Model\Table;

use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
use Cake\ORM\TableRegistry;

/**
 * Users Model
 * @property \Cake\ORM\Association\BelongsTo $GroupesThematiques
 * @property \Cake\ORM\Association\BelongsTo $GroupesMetiers
 * @property \Cake\ORM\Association\BelongsTo $SurCategories
 */
class UsersTable extends AppTable
{

    /**
     * Initialize method
     *
     * @param array $config The configuration for the Table.
     * @return void
     */
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->table('users');
        $this->displayField('id');
        $this->primaryKey('id');

        $this->belongsTo('GroupesMetiers', [
            'foreignKey' => 'groupes_metier_id'
        ]);
        $this->belongsTo('GroupesThematiques', [
        		'foreignKey' => 'groupe_thematique_id'
        ]);
		$this->belongsTo('SurCategories', [
            'foreignKey' => 'sur_categorie_id'
        ]);
		
    }

    /**
     * Default validation rules.
     *
     * @param \Cake\Validation\Validator $validator Validator instance.
     * @return \Cake\Validation\Validator
     */
    public function validationDefault(Validator $validator)
    {
        $validator
            ->integer('id')
            ->allowEmpty('id', 'create');

        $validator
            ->notEmpty('nom', 'Un nom est nécessaire')
            ->add('nom', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']);

        $validator
            ->notEmpty('username', 'Un login est nécessaire')
            ->add('username', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table'])
            ->add('username', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']);

        $validator
            ->allowEmpty('password');
        
        $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
        if($configuration->use_ldap) {
        	$validator
        		->allowEmpty('email');
        }else {
        	$validator
            	->email('email')
            	->notEmpty('email', 'Un adresse mail est nécessaire');
        }
        
	 /* 
        $validator
            ->notEmpty('role', 'Un rôle est nécessaire')
            ->add('role', 'inList', [
            		'rule' => [ 'inList',  ['Super Administrateur', 'Administration Plus', 'Administration', 'Responsable', 'Utilisateur']],
            		'message' => 'Merci de rentrer un role valide'
            ]);
			
	*/
		
			
        return $validator;
    }

    /**
     * Returns a rules checker object that will be used for validating
     * application integrity.
     *
     * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
     * @return \Cake\ORM\RulesChecker
     */
    public function buildRules(RulesChecker $rules)
    {
        $rules->add($rules->isUnique(['username']));
        //$rules->add($rules->isUnique(['email']));
        $rules->add($rules->existsIn(['groupes_metier_id'], 'GroupesMetiers'));
        $rules->add($rules->existsIn(['groupe_thematique_id'], 'GroupesThematiques'));
		$rules->add($rules->existsIn(['sur_categorie_id'], 'SurCategories'));
        return $rules;
    }
    
    
    
    function beforeSave($event, $entity, $options) {
	
    	if (!empty($entity->get('newname')) && !empty($entity->get('newgivenname'))) {
    		$entity->set('nom', $entity->get('newname').' '.$entity->get('newgivenname'));
    	}
    	return true;
    }
    
}