Browse Source

Backend : pouvoir créer des utilisateurs

Ajouter pour le boulanger la possibilité de créer des utilisateurs.
Envoi d'un email à l'utilisateur pour le prévenir en lui indiquant ses identifiants.
Ajout d'un helper pour générer des mots de passe de la longueur de notre choix.
master
keun 8 years ago
parent
commit
47d6f712c8
9 changed files with 103 additions and 26 deletions
  1. +32
    -3
      backend/controllers/UserController.php
  2. +3
    -6
      backend/views/user/_form.php
  3. +3
    -3
      backend/views/user/create.php
  4. +5
    -1
      backend/views/user/index.php
  5. +4
    -4
      backend/views/user/update.php
  6. +22
    -0
      common/helpers/Password.php
  7. +19
    -0
      common/mail/createUserAdmin-html.php
  8. +13
    -0
      common/mail/createUserAdmin-text.php
  9. +2
    -9
      frontend/models/SignupForm.php

+ 32
- 3
backend/controllers/UserController.php View File

@@ -11,6 +11,9 @@ use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use common\helpers\Upload ;
use common\helpers\Password ;
use common\models\UserEtablissement ;
use common\models\Etablissement ;

/**
* UserController implements the CRUD actions for User model.
@@ -33,7 +36,8 @@ class UserController extends BackendController
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action) {
if($action->actionMethod == 'actionIndex')
if($action->actionMethod == 'actionIndex' ||
$action->actionMethod == 'actionCreate')
{
return Yii::$app->user->identity->status == USER::STATUS_ADMIN
|| Yii::$app->user->identity->status == USER::STATUS_BOULANGER ;
@@ -89,8 +93,33 @@ class UserController extends BackendController
{
$model = new User();

if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
// save use
$password = Password::generate() ;
$model->setPassword($password);
$model->generateAuthKey();
$model->username = $model->email ;
$model->save() ;
// liaison etablissement / user
$user_etablissement = new UserEtablissement() ;
$user_etablissement->id_user = $model->id ;
$user_etablissement->id_etablissement = Yii::$app->user->identity->id_etablissement ;
$user_etablissement->save() ;
// send mail
$etablissement = Etablissement::findOne(Yii::$app->user->identity->id_etablissement) ;
Yii::$app->mailer->compose() ;
$mail = Yii::$app->mailer->compose(
['html' => 'createUserAdmin-html', 'text' => 'createUserAdmin-text'],
['user' => $model, 'etablissement' => $etablissement, 'password' => $password])
->setTo($model->email)
->setFrom(['contact@laboiteapain.net' => 'La boîte à pain'])
->setSubject('[La boîte à pain] Inscription')
->send() ;
return $this->redirect(['index']);
} else {
return $this->render('create', [
'model' => $model,

+ 3
- 6
backend/views/user/_form.php View File

@@ -11,18 +11,15 @@ use yii\widgets\ActiveForm;
<div class="user-form">

<?php $form = ActiveForm::begin(); ?>

<p>Si cette option n'est pas cochée, l'utilisateur ne pourra commander que 3 pains à la fois.</p>
<?= $form->field($model, 'confiance')->checkbox() ?>
<?= $form->field($model, 'nom')->textInput() ?>
<?= $form->field($model, 'prenom')->textInput() ?>
<?= $form->field($model, 'telephone')->textInput() ?>
<?= $form->field($model, 'email')->textInput() ?>
<?= $form->field($model, 'status')->textInput() ?>
<?= $form->field($model, 'adresse')->textarea() ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
<?= Html::submitButton($model->isNewRecord ? 'Ajouter' : 'Modifier', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>

+ 3
- 3
backend/views/user/create.php View File

@@ -6,9 +6,9 @@ use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $model common\models\User */

$this->title = 'Create User';
$this->params['breadcrumbs'][] = ['label' => 'Users', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
$this->title = 'Ajouter un utilisateur';
$this->params['breadcrumbs'][] = ['label' => 'Utilisateurs', 'url' => ['index']];
$this->params['breadcrumbs'][] = 'Ajouter' ;
?>
<div class="user-create">


+ 5
- 1
backend/views/user/index.php View File

@@ -11,7 +11,11 @@ $this->params['breadcrumbs'][] = $this->title;
?>
<div class="user-index">

<h1><?= Html::encode($this->title) ?> <?= Html::a('<span class="glyphicon glyphicon-envelope"></span> Liste des emails', ['mail'], ['class' => 'btn btn-default']) ?></h1>
<h1>
<?= Html::encode($this->title) ?>
<?= Html::a('Ajouter', ['create'], ['class' => 'btn btn-primary']) ?>
<?= Html::a('<span class="glyphicon glyphicon-envelope"></span> Liste des emails', ['mail'], ['class' => 'btn btn-default']) ?>
</h1>

<?= GridView::widget([
'dataProvider' => $dataProvider,

+ 4
- 4
backend/views/user/update.php View File

@@ -5,10 +5,10 @@ use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $model common\models\User */

$this->title = 'Update User: ' . ' ' . $model->id;
$this->params['breadcrumbs'][] = ['label' => 'Users', 'url' => ['index']];
$this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]];
$this->params['breadcrumbs'][] = 'Update';
$this->title = 'Modifier un utilisateur' ;
$this->params['breadcrumbs'][] = ['label' => 'Utilisateurs', 'url' => ['index']];
$this->params['breadcrumbs'][] = ['label' => Html::encode($model->nom.' '.$model->prenom)];
$this->params['breadcrumbs'][] = 'Modifier';
?>
<div class="user-update">


+ 22
- 0
common/helpers/Password.php View File

@@ -0,0 +1,22 @@
<?php

namespace common\helpers;

class Password {
public static function generate($length = 6)
{
$chaine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789' ;
$nb = strlen($chaine) - 1;
$code = '';
for($i=0; $i < $length; $i++)
{
$pos = mt_rand(0, $nb);
$car = $chaine[$pos];
$code .= $car;
}
return $code ;
}
}

+ 19
- 0
common/mail/createUserAdmin-html.php View File

@@ -0,0 +1,19 @@
<?php

use yii\helpers\Html;

?>

<p>Bonjour <?= Html::encode($user->prenom); ?>,</p>

<p>Votre boulangerie <strong><?= Html::encode($etablissement->nom); ?></strong> vient
de créer un compte pour vous sur le site <a href="http://www.laboiteapain.net/">La boîte à pain</a>.</p>

<p><strong>Ce compte vous permet de passer vos commandes dans cette boulangerie.</strong></p>

<p>Voci vos identifiants de connexion :<br />
Identifiant : <strong><?= Html::encode($user->email); ?></strong><br />
Mot de passe : <strong><?= $password ?></strong></p>

<p>Cordialement,<br />
<em>La boîte à pain</em></p>

+ 13
- 0
common/mail/createUserAdmin-text.php View File

@@ -0,0 +1,13 @@
Bonjour <?= $user->prenom ?>,

Votre boulangerie "<?= $etablissement->nom ?>" vient
de créer un compte pour vous sur le site http://www.laboiteapain.net/.

Ce compte vous permet de passer vos commandes dans cette boulangerie.

Voci vos identifiants de connexion :
Identifiant : <?= $user->email; ?>
Mot de passe : <?= $password ?>

Cordialement,
La boîte à pain

+ 2
- 9
frontend/models/SignupForm.php View File

@@ -6,6 +6,7 @@ use common\models\User;
use common\models\Etablissement;
use yii\base\Model;
use common\models\UserEtablissement ;
use common\helpers\Password ;

/**
* Signup form
@@ -186,15 +187,7 @@ class SignupForm extends Model
// génération d'un code
do {
$chaine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789' ;
$nb = strlen($chaine) - 1;
$code = '';
for($i=0; $i < 6; $i++)
{
$pos = mt_rand(0, $nb);
$car = $chaine[$pos];
$code .= $car;
}
$code = Password::generate() ;
$etablissement->code = $code ;
} while(Etablissement::findOne(['code' => $code]));

Loading…
Cancel
Save