예제 #1
0
파일: Shareable.php 프로젝트: enpowi/enpowi
 public function addSharedUser(User $user)
 {
     $bean = $this->bean();
     if ($bean === null) {
         return $this;
     }
     $bean->sharedUserList[] = $user->bean();
     return $this;
 }
예제 #2
0
파일: User.php 프로젝트: enpowi/enpowi
 public static function getByEmailAndPassword($email, $password)
 {
     $user = new User($email);
     $bean = $user->bean();
     if ($bean !== null) {
         if (password_verify($password, $bean->password)) {
             return $user;
         }
     }
     return null;
 }
예제 #3
0
파일: Post.php 프로젝트: Koohiisan/Enpowi
 public function replace($content = '')
 {
     if (empty($this->name)) {
         throw new Exception('Blog post needs name before it can be saved');
     }
     $bean = $this->_bean;
     if ($bean === null) {
         $this->_bean = $bean = R::dispense('blog');
     }
     $bean->name = $this->name;
     $this->content = $bean->content = $content;
     $bean->edited = R::isoDateTime();
     $bean->created = $this->created ?: R::isoDateTime();
     $otherUserBean = App::user()->bean();
     $bean->user = $this->_user !== null ? $this->_user->bean() : $otherUserBean;
     $this->contributorIds[] = $otherUserBean->getID();
     $this->contributorIds = array_unique($this->contributorIds);
     $bean->contributorIds = implode(',', $this->contributorIds);
     if (!empty($this->publishedOn)) {
         $bean->publishedOn = R::isoDateTime($this->publishedOn);
     } else {
         $bean->publishedOn = null;
     }
     R::store($bean);
 }
예제 #4
0
파일: Group.php 프로젝트: enpowi/enpowi
 public function removeUser(User $user)
 {
     $userBean = $user->bean();
     $groupBean = $this->_bean;
     if ($groupBean !== null && $user !== null) {
         if (!$groupBean->isDefaultRegistered && !$groupBean->isDefaultAnonymous && !$groupBean->isEveryone) {
             unset($userBean->sharedGroupList[$groupBean->getID()]);
             R::store($userBean);
             $user->updateGroups();
         }
         return false;
     }
     return true;
 }
예제 #5
0
<?php

use Enpowi\App;
use Enpowi\Users\User;
use Enpowi\Modules\Module;
Module::is();
$email = App::param('email');
$password = App::param('password');
$reply = [];
$stop = false;
if (!User::isEmailValid($email)) {
    $reply['email'] = 'Invalid';
    $stop = true;
}
if (!User::isUnique($email)) {
    $reply['email'] = 'Already taken';
    $stop = true;
}
if (!User::isValidPassword($password)) {
    $reply['password'] = '******';
    $reply['repeatPassword'] = '******';
    $stop = true;
}
if ($stop) {
    echo json_encode(['paramResponse' => $reply, 'id' => -1]);
    die;
}
$user = User::create($email, $password);
echo json_encode(['id' => $user->id]);
예제 #6
0
 public function impersonate(User $user)
 {
     if ($user->exists()) {
         $this->segment->set('impersonateUser', $user->id);
         Event\Authentication\Impersonate::pub($user, $this);
         return true;
     }
     return false;
 }
예제 #7
0
파일: Post.php 프로젝트: enpowi/enpowi
    /**
     * @param User $user
     * @param bool|false $showAll
     * @return Post|null
     */
    public static function userMostRecentPost(User $user, $showAll = false)
    {
        $bean = R::findOne('blog', '
			where
				user_id = :user_id
				and (
					true = :show_all
					or date(published_on) >= now()
				)
			order by created limit 0, 1', ['user_id' => $user->bean()->getID(), 'show_all' => $showAll]);
        if ($bean !== null) {
            return new Post($bean->name, $bean);
        }
        return null;
    }
예제 #8
0
use Enpowi\App;
use Enpowi\Users\User;
use Enpowi\Modules\Module;
Module::is();
$user = App::user();
$password = App::param('password');
$passwordRepeat = App::param('passwordRepeat');
$update = App::paramBool('update');
$stop = false;
Module::paramRespond('password', '');
Module::paramRespond('passwordRepeat', '');
Module::paramRespond('passwordUpdated', '');
if (empty($password)) {
    $stop = true;
}
if (!$stop && $password !== $passwordRepeat) {
    Module::paramRespond('passwordRepeat', 'Passwords do not match');
    $stop = true;
}
if (!$stop && !User::isValidPassword($password)) {
    Module::paramRespond('password', 'Invalid');
    $stop = true;
}
if (!$stop) {
    if ($update) {
        if ($user->updatePassword($password)) {
            Module::paramRespond('passwordUpdated', 'Password updated');
        }
    }
}
예제 #9
0
파일: list.php 프로젝트: enpowi/enpowi
use Enpowi\App;
use Enpowi\Users\User;
use Enpowi\Users\Group;
use Enpowi\Modules\DataOut;
use Enpowi\Modules\Module;
Module::is();
$app = App::get();
$auth = $app->authentication;
$page = App::paramIs('page') ? App::paramInt('page') : 1;
$users = null;
if (App::paramIs('email')) {
    $users = [User::getByEmail(App::param('email'))];
    $pages = 0;
} else {
    $users = User::users($page);
    $pages = User::pages();
}
(new DataOut())->add('email', App::param('email'))->add('pages', $pages)->add('page', $page)->add('users', $users)->add('availableGroups', Group::groups())->add('impersonateUser', $auth->isImpersonate() ? $auth->getUser() : [])->add('action', '')->bind();
?>
<form
	v-module
	action="users/listService"
	v-bind:data-done="page ? 'users/list?page=' + page : 'users/list'"
	class="container">
	<h3><span v-t>Users</span>
		<a v-title="New User" href="#/users/new"><span class="glyphicon glyphicon-plus-sign"></span></a></h3>
	<input
		name="q"
		v-placeholder="find user"
		v-find="{
			find: 'users/listService?action=find&q=',
예제 #10
0
파일: list.php 프로젝트: Koohiisan/Enpowi
<?php

use Enpowi\App;
use Enpowi\Users\User;
use Enpowi\Users\Group;
use Enpowi\Modules\DataOut;
use Enpowi\Modules\Module;
Module::is();
$app = App::get();
$auth = $app->authentication;
$data = (new DataOut())->add('users', User::users())->add('availableGroups', Group::groups())->add('impersonateUser', $auth->isImpersonate() ? $auth->getUser() : [])->add('action', '')->out();
?>
<form
	v-module
    data="<?php 
echo $data;
?>
"
	action="users/listService"
	data-done="users/list"
	class="container">
	<h3><span v-t>Users</span>
		<a v-title="New User" href="#/users/new"><span class="glyphicon glyphicon-plus-sign"></span></a></h3>
	<table class="table">
		<tbody>
			<tr>
				<td></td>
				<th v-t>Email</th>
				<th v-t>Created</th>
				<td>
					<span v-show="impersonateUser.email">
예제 #11
0
파일: User.php 프로젝트: enpowi/enpowi
<?php

use Enpowi\Users\User;
$tf->test('Adding a user', function (\Testify\Testify $tf) {
    $email = '*****@*****.**';
    User::create($email, '123123123');
    $user = new User($email);
    $tf->assertTrue($user->bean() !== null);
});
$tf->test('Removing a user', function (\Testify\Testify $tf) {
    $email = '*****@*****.**';
    User::create($email, '123123123');
    (new User($email))->remove();
    $user = new User($email);
    $tf->assertTrue($user->bean() === null);
});
예제 #12
0
파일: login.php 프로젝트: enpowi/enpowi
<?php

use Enpowi\Users\User;
use Enpowi\App;
use Enpowi\Modules\Module;
Module::is();
$response = [];
$user = User::getByEmailAndPassword(App::param('email'), App::param('password'));
if ($user === null) {
    $response['paramResponse'] = ['email' => 'Invalid email or password'];
    $response['id'] = -1;
} else {
    $login = $user->login();
    $response['id'] = $user->id;
    if (App::paramIs('remember')) {
        App::get()->authentication->rememberUserId();
    } else {
        App::get()->authentication->forgetUserId();
    }
}
echo json_encode($response);
예제 #13
0
파일: view.php 프로젝트: enpowi/enpowi
<?php

use Enpowi\App;
use Enpowi\Users\User;
use Enpowi\Modules\Module;
Module::is();
$user = User::fromId(App::param('id'));
require path . '/modules/user/view.php';
예제 #14
0
$passwordRepeat = App::param('passwordRepeat');
$update = App::paramBool('update');
$stopEmail = false;
$stopPassword = false;
if (empty($password)) {
    $stopPassword = true;
}
if (!$stopPassword && $password !== $passwordRepeat) {
    Module::paramRespond('passwordRepeat', 'Passwords do not match');
    $stopPassword = true;
}
if (!$stopPassword && !User::isValidPassword($password)) {
    Module::paramRespond('password', 'Invalid');
    $stopPassword = true;
}
if ($user->email !== $_user->email && !User::isEmailValid($_user->email)) {
    Module::paramRespond('email', 'Not a valid email');
    $stopEmail = true;
}
if ($update) {
    if (!$stopEmail) {
        if ($user->email !== $_user->email && $user->updateEmail($_user->email)) {
            Module::successRespond('emailUpdated', 'Updated');
        }
    }
    if (!$stopPassword) {
        if ($user->updatePassword($password)) {
            Module::successRespond('passwordUpdated', 'Password updated');
        }
    }
}
예제 #15
0
파일: newSite.php 프로젝트: enpowi/enpowi
use RedBeanPHP\R;
use Enpowi\Users\Group;
use Enpowi\Users\User;
use Enpowi\Users\Perm;
use Enpowi\App;
use Enpowi\Modules\Module;
Module::run();
R::nuke();
App::log('setup', 'newSite');
//create groups
$everyoneGroup = Group::create('Everyone', false, false, true);
$anonymousGroup = Group::create('Anonymous', false, true);
$registeredGroup = Group::create('Registered', true);
$administratorGroup = Group::create('Administrator', false, false, false, true);
//create first user & put him in admin group
$administratorUser = User::create('admin', 'admin', true);
$administratorGroup->addUser($administratorUser);
//give Anonymous abilities
Perm::create('user', 'login', $anonymousGroup);
Perm::create('user', 'register', $anonymousGroup);
Perm::create('user', 'forgot', $anonymousGroup);
Perm::create('user', 'confirm', $anonymousGroup);
//give registered abilities
Perm::create('gallery', '*', $registeredGroup);
Perm::create('user', 'view', $registeredGroup);
Perm::create('user', 'logout', $registeredGroup);
Perm::create('user', 'confirm', $registeredGroup);
Perm::create('page', 'edit', $registeredGroup);
//give Administrator group access to everything
Perm::create('*', '*', $administratorGroup);
//give everyone the ability to see modules with no security
예제 #16
0
<?php

use Enpowi\App;
use Enpowi\Modules\Module;
use Enpowi\Users\User;
use Enpowi\Mail;
Module::is();
$email = App::param('email');
$user = User::getByEmail($email);
$password = $user->resetPassword();
$mailed = (new Mail())->setArgs(['email' => $user->email, 'password' => $password])->send(function (PHPMailer $mail) use($user) {
    $mail->addAddress($user->email);
    $mail->Subject = App::$config->siteName . ' Registration';
});