fixed the bug of Sodistore Home Product not show on side bar and added related backend logs and more accurate frontend error messages
This commit is contained in:
parent
d73a85c38d
commit
617ab2f782
|
|
@ -596,6 +596,13 @@ public class Controller : ControllerBase
|
||||||
var folder = Db.GetFolderById(folderAccess.FolderId);
|
var folder = Db.GetFolderById(folderAccess.FolderId);
|
||||||
var user = Db.GetUserById(folderAccess.UserId);
|
var user = Db.GetUserById(folderAccess.UserId);
|
||||||
|
|
||||||
|
// Check if user already has access - treat as idempotent (success)
|
||||||
|
if (user is not null && folder is not null && user.HasAccessTo(folder))
|
||||||
|
{
|
||||||
|
Console.WriteLine($"GrantUserAccessToFolder: User {user.Id} ({user.Name}) already has access to folder {folder.Id} ({folder.Name}) - returning success");
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
|
||||||
return session.GrantUserAccessTo(user, folder)
|
return session.GrantUserAccessTo(user, folder)
|
||||||
? Ok()
|
? Ok()
|
||||||
: Unauthorized();
|
: Unauthorized();
|
||||||
|
|
@ -626,6 +633,13 @@ public class Controller : ControllerBase
|
||||||
var installation = Db.GetInstallationById(installationAccess.InstallationId);
|
var installation = Db.GetInstallationById(installationAccess.InstallationId);
|
||||||
var user = Db.GetUserById(installationAccess.UserId);
|
var user = Db.GetUserById(installationAccess.UserId);
|
||||||
|
|
||||||
|
// Check if user already has access - treat as idempotent (success)
|
||||||
|
if (user is not null && installation is not null && user.HasAccessTo(installation))
|
||||||
|
{
|
||||||
|
Console.WriteLine($"GrantUserAccessToInstallation: User {user.Id} ({user.Name}) already has access to installation {installation.Id} ({installation.Name}) - returning success");
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
|
||||||
return session.GrantUserAccessTo(user, installation)
|
return session.GrantUserAccessTo(user, installation)
|
||||||
? Ok()
|
? Ok()
|
||||||
: Unauthorized();
|
: Unauthorized();
|
||||||
|
|
|
||||||
|
|
@ -405,13 +405,53 @@ public static class SessionMethods
|
||||||
{
|
{
|
||||||
var sessionUser = session?.User;
|
var sessionUser = session?.User;
|
||||||
|
|
||||||
return sessionUser is not null
|
if (sessionUser is null)
|
||||||
&& folder is not null
|
{
|
||||||
&& user is not null
|
Console.WriteLine($"GrantUserAccessToFolder failed: sessionUser is null");
|
||||||
&& user.IsDescendantOf(sessionUser)
|
return false;
|
||||||
&& sessionUser.HasAccessTo(folder)
|
}
|
||||||
&& !user.HasAccessTo(folder)
|
|
||||||
&& Db.Create(new FolderAccess { UserId = user.Id, FolderId = folder.Id });
|
if (folder is null)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"GrantUserAccessToFolder failed: folder is null");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user is null)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"GrantUserAccessToFolder failed: user is null");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!user.IsDescendantOf(sessionUser))
|
||||||
|
{
|
||||||
|
Console.WriteLine($"GrantUserAccessToFolder failed: User {user.Id} ({user.Name}) is not a descendant of sessionUser {sessionUser.Id} ({sessionUser.Name})");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sessionUser.HasAccessTo(folder))
|
||||||
|
{
|
||||||
|
Console.WriteLine($"GrantUserAccessToFolder failed: SessionUser {sessionUser.Id} ({sessionUser.Name}) does not have access to folder {folder.Id} ({folder.Name})");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user.HasAccessTo(folder))
|
||||||
|
{
|
||||||
|
Console.WriteLine($"GrantUserAccessToFolder failed: User {user.Id} ({user.Name}) already has access to folder {folder.Id} ({folder.Name})");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var created = Db.Create(new FolderAccess { UserId = user.Id, FolderId = folder.Id });
|
||||||
|
if (!created)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"GrantUserAccessToFolder failed: Failed to create FolderAccess record for User {user.Id} and Folder {folder.Id}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine($"GrantUserAccessToFolder succeeded: Granted User {user.Id} ({user.Name}) access to Folder {folder.Id} ({folder.Name})");
|
||||||
|
}
|
||||||
|
|
||||||
|
return created;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Boolean RevokeUserAccessTo(this Session? session, User? user, Installation? installation)
|
public static Boolean RevokeUserAccessTo(this Session? session, User? user, Installation? installation)
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ function App() {
|
||||||
setUser(response.data.user);
|
setUser(response.data.user);
|
||||||
setAccessToSalimax(response.data.accessToSalimax);
|
setAccessToSalimax(response.data.accessToSalimax);
|
||||||
setAccessToSalidomo(response.data.accessToSalidomo);
|
setAccessToSalidomo(response.data.accessToSalidomo);
|
||||||
setAccessToSodiohome(response.data.accessToSodiohome);
|
setAccessToSodiohome(response.data.accessToSodioHome);
|
||||||
setAccessToSodistore(response.data.accessToSodistoreMax);
|
setAccessToSodistore(response.data.accessToSodistoreMax);
|
||||||
if (response.data.accessToSalimax) {
|
if (response.data.accessToSalimax) {
|
||||||
navigate(routes.installations);
|
navigate(routes.installations);
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,13 @@ function UserAccess(props: UserAccessProps) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
setErrorMessage('An error has occured');
|
if (err.response && err.response.status === 401) {
|
||||||
|
setErrorMessage(
|
||||||
|
`User ${props.current_user.name} already has access to folder "${folder.name}" or you don't have permission to grant this access`
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
setErrorMessage('An error has occured');
|
||||||
|
}
|
||||||
setError(true);
|
setError(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -195,7 +201,13 @@ function UserAccess(props: UserAccessProps) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
setErrorMessage('An error has occured');
|
if (err.response && err.response.status === 401) {
|
||||||
|
setErrorMessage(
|
||||||
|
`User ${props.current_user.name} already has access to installation "${installation.name}" or you don't have permission to grant this access`
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
setErrorMessage('An error has occured');
|
||||||
|
}
|
||||||
setError(true);
|
setError(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue