implemented account list
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -26,6 +26,7 @@ import static de.srsoftware.tools.Optionals.nullIfEmpty;
|
|||||||
import static de.srsoftware.umbrella.accounting.Constants.CONFIG_DATABASE;
|
import static de.srsoftware.umbrella.accounting.Constants.CONFIG_DATABASE;
|
||||||
import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
|
import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
|
||||||
import static de.srsoftware.umbrella.core.ModuleRegistry.userService;
|
import static de.srsoftware.umbrella.core.ModuleRegistry.userService;
|
||||||
|
import static de.srsoftware.umbrella.core.Util.mapValues;
|
||||||
import static de.srsoftware.umbrella.core.constants.Path.JSON;
|
import static de.srsoftware.umbrella.core.constants.Path.JSON;
|
||||||
import static de.srsoftware.umbrella.core.constants.Path.SEARCH;
|
import static de.srsoftware.umbrella.core.constants.Path.SEARCH;
|
||||||
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.invalidField;
|
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.invalidField;
|
||||||
@@ -81,7 +82,7 @@ public class AccountingModule extends BaseHandler implements AccountingService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean getAccounts(UmbrellaUser user, HttpExchange ex) throws IOException {
|
private boolean getAccounts(UmbrellaUser user, HttpExchange ex) throws IOException {
|
||||||
return sendContent(ex,accountDb.listAccounts(user.id()));
|
return sendContent(ex,accountDb.listAccounts(user.id()).stream().map(Account::toMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
import { loadTranslation } from './translations.svelte';
|
import { loadTranslation } from './translations.svelte';
|
||||||
import { checkUser, user } from './user.svelte';
|
import { checkUser, user } from './user.svelte';
|
||||||
|
|
||||||
|
import Account from "./routes/accounting/account.svelte";
|
||||||
import Accounts from "./routes/accounting/index.svelte";
|
import Accounts from "./routes/accounting/index.svelte";
|
||||||
import AddDoc from "./routes/document/Add.svelte";
|
import AddDoc from "./routes/document/Add.svelte";
|
||||||
import AddTask from "./routes/task/Add.svelte";
|
import AddTask from "./routes/task/Add.svelte";
|
||||||
@@ -90,6 +91,7 @@
|
|||||||
<span class="warn">{@html messages.warning}</span>
|
<span class="warn">{@html messages.warning}</span>
|
||||||
{/if}
|
{/if}
|
||||||
<Route path="/" component={User} />
|
<Route path="/" component={User} />
|
||||||
|
<Route path="/account/:id" component={Account} />
|
||||||
<Route path="/accounting" component={Accounts} />
|
<Route path="/accounting" component={Accounts} />
|
||||||
<Route path="/accounting/new" component={NewAccount} />
|
<Route path="/accounting/new" component={NewAccount} />
|
||||||
<Route path="/bookmark" component={Bookmarks} />
|
<Route path="/bookmark" component={Bookmarks} />
|
||||||
|
|||||||
5
frontend/src/routes/accounting/account.svelte
Normal file
5
frontend/src/routes/accounting/account.svelte
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<script>
|
||||||
|
let { id } = $props();
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<h1>Account {id}</h1>
|
||||||
@@ -22,11 +22,29 @@
|
|||||||
router.navigate('/accounting/new');
|
router.navigate('/accounting/new');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onclick(e){
|
||||||
|
e.preventDefault();
|
||||||
|
let href = e.target.getAttribute('href');
|
||||||
|
if (href) router.navigate(href);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
onMount(load);
|
onMount(load);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{t('accounts')}</legend>
|
<legend>{t('accounts')}</legend>
|
||||||
|
|
||||||
<button onclick={newAccount}>{t('create_new_object',{'object':t('account')})}</button>
|
<span></span>
|
||||||
|
<span>
|
||||||
|
<button onclick={newAccount}>{t('create_new_object',{'object':t('account')})}</button>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
{#each accounts as account (account.id)}
|
||||||
|
<li>
|
||||||
|
<a {onclick} href="account/{account.id}">{account.name} ({account.id})</a>
|
||||||
|
</li>
|
||||||
|
{/each}
|
||||||
|
</ul>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@@ -412,8 +412,7 @@ public class UserModule extends BaseHandler implements UserService {
|
|||||||
|
|
||||||
private boolean getUserList(HttpExchange ex, UmbrellaUser user) throws IOException, UmbrellaException {
|
private boolean getUserList(HttpExchange ex, UmbrellaUser user) throws IOException, UmbrellaException {
|
||||||
if (!(user instanceof DbUser dbUser && dbUser.permissions().contains(LIST_USERS))) throw forbidden("You are not allowed to list users!");
|
if (!(user instanceof DbUser dbUser && dbUser.permissions().contains(LIST_USERS))) throw forbidden("You are not allowed to list users!");
|
||||||
var list = users.list(0, null,null).values().stream().map(UmbrellaUser::toMap).toList();
|
return sendContent(ex,users.list(0, null,null).values().stream().map(UmbrellaUser::toMap));
|
||||||
return sendContent(ex,list);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean impersonate(HttpExchange ex, Long targetId) throws IOException, UmbrellaException {
|
private boolean impersonate(HttpExchange ex, Long targetId) throws IOException, UmbrellaException {
|
||||||
|
|||||||
Reference in New Issue
Block a user