Browse Source

Add EncryptedPassword model

pull/617/head
Timothée Jaussoin 8 years ago
parent
commit
070b273324
  1. 16
      app/EncryptedPassword.php
  2. 5
      app/User.php
  3. 43
      app/widgets/Login/Login.php
  4. 3
      app/widgets/Presence/Presence.php
  5. 29
      database/migrations/20180324134149_create_encrypted_passwords_table.php

16
app/EncryptedPassword.php

@ -0,0 +1,16 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class EncryptedPassword extends Model
{
protected $fillable = ['id'];
public $incrementing = false;
public function session()
{
return $this->hasOne('App\Session');
}
}

5
app/User.php

@ -21,6 +21,11 @@ class User extends Model
return $this->hasOne('App\Contact', 'id');
}
public function encryptedPasswords()
{
return $this->hasMany('App\EncryptedPassword');
}
public static function me()
{
$session = Session::start();

43
app/widgets/Login/Login.php

@ -92,8 +92,7 @@ class Login extends Base
function showErrorBlock($error)
{
$ed = new \Modl\EncryptedPassDAO;
$ed->delete();
App\User::me()->encryptedPasswords()->delete();
$this->rpc('Login.clearQuick');
$this->rpc('MovimTpl.fill', '#error', $this->prepareError($error));
@ -169,8 +168,7 @@ class Login extends Base
try {
$key = Key::loadFromAsciiSafeString($key);
$ed = new \Modl\EncryptedPassDAO;
$ciphertext = $ed->get($deviceId);
$ciphertext = App\User::find($login)->encryptedPasswords->find($deviceId);
if ($ciphertext) {
$password = Crypto::decrypt($ciphertext->data, $key);
@ -220,18 +218,17 @@ class Login extends Base
$rkey = Key::createNewRandomKey();
$ed = new \Modl\EncryptedPassDAO;
if (!$deviceId) {
$deviceId = generateKey(16);
$deviceId = generateKey(16);
$ciphertext = Crypto::encrypt($password, $rkey);
$key = new App\EncryptedPassword;
$key->user_id = $login;
$key->id = $deviceId;
$key->data = Crypto::encrypt($password, $rkey);
$key->save();
$key = new \Modl\EncryptedPass;
$key->id = $deviceId;
$key->data = $ciphertext;
$ed->set($key);
$this->rpc('Login.setQuick', $deviceId, $login, $host, $rkey->saveToAsciiSafeString());
$this->rpc('Login.setQuick', $deviceId, $login, $host, $rkey->saveToAsciiSafeString());
}
$user = User::firstOrNew(['id' => $login]);
$user->init();
@ -239,23 +236,23 @@ class Login extends Base
if ($here) {
$this->rpc('Login.setCookie', 'MOVIM_SESSION_ID', $here->id, date(DATE_COOKIE, Cookie::getTime()));
//$this->rpc('MovimUtils.redirect', $this->route('main'));
$this->rpc('MovimUtils.redirect', $this->route('main'));
return;
} else {
$s = new DBSession;
$s->init($username, $password, $host);
$s->loadMemory();
$s->save();
}
/*$s = new \Modl\Sessionx;
$s->init($username, $password, $host);
$s->loadMemory();
$sd->set($s);*/
/*$s = new \Modl\Sessionx;
$s->init($username, $password, $host);
$s->loadMemory();
$sd->set($s);*/
// We launch the XMPP socket
$this->rpc('register', $host);
// We launch the XMPP socket
$this->rpc('register', $host);
\Moxl\Stanza\Stream::init($host);
\Moxl\Stanza\Stream::init($host);
}
}
}

3
app/widgets/Presence/Presence.php

@ -74,8 +74,7 @@ class Presence extends \Movim\Widget\Base
{
$this->rpc('Presence.clearQuick');
$ed = new \Modl\EncryptedPassDAO;
$ed->delete();
App\User::me()->encryptedPasswords()->delete();
$session = Session::start();
$p = new Unavailable;

29
database/migrations/20180324134149_create_encrypted_passwords_table.php

@ -0,0 +1,29 @@
<?php
use Movim\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateEncryptedPasswordsTable extends Migration
{
public function up()
{
$this->schema->create('encrypted_passwords', function(Blueprint $table) {
$table->string('user_id', 64);
$table->string('id', 64);
$table->text('data');
$table->timestamps();
$table->primary(['user_id', 'id']);
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
});
}
public function down()
{
$this->schema->drop('encrypted_passwords');
}
}
Loading…
Cancel
Save