Fixed frontend behavior after edited user name
This commit is contained in:
parent
cb08f68469
commit
6ce7beffd2
4 changed files with 32 additions and 5 deletions
|
@ -100,8 +100,8 @@ App.Auth = function(_, jQuery, util, api, appState, promise) {
|
||||||
function updateAppState(response) {
|
function updateAppState(response) {
|
||||||
appState.set('privileges', response.json.privileges || []);
|
appState.set('privileges', response.json.privileges || []);
|
||||||
appState.set('loginToken', response.json.token && response.json.token.name);
|
appState.set('loginToken', response.json.token && response.json.token.name);
|
||||||
appState.set('loggedInUser', response.json.user);
|
|
||||||
appState.set('loggedIn', response.json.user && !!response.json.user.id);
|
appState.set('loggedIn', response.json.user && !!response.json.user.id);
|
||||||
|
appState.set('loggedInUser', response.json.user);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isLoggedIn(userName) {
|
function isLoggedIn(userName) {
|
||||||
|
@ -124,12 +124,19 @@ App.Auth = function(_, jQuery, util, api, appState, promise) {
|
||||||
return appState.get('privileges');
|
return appState.get('privileges');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateCurrentUser(user) {
|
||||||
|
if (user.id !== getCurrentUser().id) {
|
||||||
|
throw new Error('Cannot set current user to other user this way.');
|
||||||
|
}
|
||||||
|
appState.set('loggedInUser', user);
|
||||||
|
}
|
||||||
|
|
||||||
function hasPrivilege(privilege) {
|
function hasPrivilege(privilege) {
|
||||||
return _.contains(getCurrentPrivileges(), privilege);
|
return _.contains(getCurrentPrivileges(), privilege);
|
||||||
}
|
}
|
||||||
|
|
||||||
function startObservingLoginChanges(listenerName, callback) {
|
function startObservingLoginChanges(listenerName, callback) {
|
||||||
appState.startObserving('loggedIn', listenerName, callback);
|
appState.startObserving('loggedInUser', listenerName, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -142,6 +149,7 @@ App.Auth = function(_, jQuery, util, api, appState, promise) {
|
||||||
startObservingLoginChanges: startObservingLoginChanges,
|
startObservingLoginChanges: startObservingLoginChanges,
|
||||||
isLoggedIn: isLoggedIn,
|
isLoggedIn: isLoggedIn,
|
||||||
getCurrentUser: getCurrentUser,
|
getCurrentUser: getCurrentUser,
|
||||||
|
updateCurrentUser: updateCurrentUser,
|
||||||
getCurrentPrivileges: getCurrentPrivileges,
|
getCurrentPrivileges: getCurrentPrivileges,
|
||||||
hasPrivilege: hasPrivilege,
|
hasPrivilege: hasPrivilege,
|
||||||
|
|
||||||
|
|
|
@ -127,8 +127,14 @@ App.Presenters.UserAccountSettingsPresenter = function(
|
||||||
}
|
}
|
||||||
|
|
||||||
function editSuccess(apiResponse) {
|
function editSuccess(apiResponse) {
|
||||||
|
var wasLoggedIn = auth.isLoggedIn(user.name);
|
||||||
user = apiResponse.json;
|
user = apiResponse.json;
|
||||||
|
if (wasLoggedIn) {
|
||||||
|
auth.updateCurrentUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
render();
|
render();
|
||||||
|
|
||||||
var $messages = jQuery(target).find('.messages');
|
var $messages = jQuery(target).find('.messages');
|
||||||
var message = 'Account settings updated!';
|
var message = 'Account settings updated!';
|
||||||
if (!apiResponse.json.confirmed) {
|
if (!apiResponse.json.confirmed) {
|
||||||
|
|
|
@ -58,7 +58,7 @@ class PrivilegeService
|
||||||
$loggedInUser = $this->authService->getLoggedInUser();
|
$loggedInUser = $this->authService->getLoggedInUser();
|
||||||
if ($userIdentifier instanceof \Szurubooru\Entities\User)
|
if ($userIdentifier instanceof \Szurubooru\Entities\User)
|
||||||
{
|
{
|
||||||
return $loggedInUser->name === $userIdentifier->name;
|
return $loggedInUser->id and ($loggedInUser->id === $userIdentifier->id);
|
||||||
}
|
}
|
||||||
elseif (is_string($userIdentifier))
|
elseif (is_string($userIdentifier))
|
||||||
{
|
{
|
||||||
|
|
|
@ -56,7 +56,20 @@ class PrivilegeServiceTest extends \Szurubooru\Tests\AbstractTestCase
|
||||||
$this->assertFalse($privilegeService->isLoggedIn($testUser2->email));
|
$this->assertFalse($privilegeService->isLoggedIn($testUser2->email));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testIsLoggedInByUser()
|
public function testIsLoggedInByUserId()
|
||||||
|
{
|
||||||
|
$testUser1 = new \Szurubooru\Entities\User();
|
||||||
|
$testUser1->id = 'dummy';
|
||||||
|
$testUser2 = new \Szurubooru\Entities\User();
|
||||||
|
$testUser2->id = 'godzilla';
|
||||||
|
$this->authServiceMock->method('getLoggedInUser')->willReturn($testUser1);
|
||||||
|
|
||||||
|
$privilegeService = $this->getPrivilegeService();
|
||||||
|
$this->assertTrue($privilegeService->isLoggedIn($testUser1));
|
||||||
|
$this->assertFalse($privilegeService->isLoggedIn($testUser2));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testIsLoggedInByUserName()
|
||||||
{
|
{
|
||||||
$testUser1 = new \Szurubooru\Entities\User();
|
$testUser1 = new \Szurubooru\Entities\User();
|
||||||
$testUser1->name = 'dummy';
|
$testUser1->name = 'dummy';
|
||||||
|
@ -65,7 +78,7 @@ class PrivilegeServiceTest extends \Szurubooru\Tests\AbstractTestCase
|
||||||
$this->authServiceMock->method('getLoggedInUser')->willReturn($testUser1);
|
$this->authServiceMock->method('getLoggedInUser')->willReturn($testUser1);
|
||||||
|
|
||||||
$privilegeService = $this->getPrivilegeService();
|
$privilegeService = $this->getPrivilegeService();
|
||||||
$this->assertTrue($privilegeService->isLoggedIn($testUser1));
|
$this->assertFalse($privilegeService->isLoggedIn($testUser1));
|
||||||
$this->assertFalse($privilegeService->isLoggedIn($testUser2));
|
$this->assertFalse($privilegeService->isLoggedIn($testUser2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue