Add user invitations
This commit is contained in:
73
app/Model/InviteModel.php
Normal file
73
app/Model/InviteModel.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace Kanboard\Model;
|
||||
|
||||
use Kanboard\Core\Base;
|
||||
use Kanboard\Core\Security\Token;
|
||||
|
||||
/**
|
||||
* Class InviteModel
|
||||
*
|
||||
* @package Kanboard\Model
|
||||
* @author Frederic Guillot
|
||||
*/
|
||||
class InviteModel extends Base
|
||||
{
|
||||
const TABLE = 'invites';
|
||||
|
||||
public function createInvites(array $emails, $projectId)
|
||||
{
|
||||
$emails = array_unique($emails);
|
||||
$nb = 0;
|
||||
|
||||
foreach ($emails as $email) {
|
||||
$email = trim($email);
|
||||
|
||||
if (! empty($email) && $this->createInvite($email, $projectId)) {
|
||||
$nb++;
|
||||
}
|
||||
}
|
||||
|
||||
return $nb;
|
||||
}
|
||||
|
||||
protected function createInvite($email, $projectId)
|
||||
{
|
||||
$values = array(
|
||||
'email' => $email,
|
||||
'project_id' => $projectId,
|
||||
'token' => Token::getToken(),
|
||||
);
|
||||
|
||||
if ($this->db->table(self::TABLE)->insert($values)) {
|
||||
$this->sendInvite($values);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected function sendInvite(array $values)
|
||||
{
|
||||
$this->emailClient->send(
|
||||
$values['email'],
|
||||
$values['email'],
|
||||
e('Kanboard Invitation'),
|
||||
$this->template->render('user_invite/email', array('token' => $values['token']))
|
||||
);
|
||||
}
|
||||
|
||||
public function getByToken($token)
|
||||
{
|
||||
return $this->db->table(self::TABLE)
|
||||
->eq('token', $token)
|
||||
->findOne();
|
||||
}
|
||||
|
||||
public function remove($email)
|
||||
{
|
||||
return $this->db->table(self::TABLE)
|
||||
->eq('email', $email)
|
||||
->remove();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user