preparing document module
This commit is contained in:
@@ -13,6 +13,7 @@ application{
|
|||||||
|
|
||||||
dependencies{
|
dependencies{
|
||||||
implementation(project(":core"))
|
implementation(project(":core"))
|
||||||
|
implementation(project(":documents"))
|
||||||
implementation(project(":legacy"))
|
implementation(project(":legacy"))
|
||||||
implementation(project(":messages"))
|
implementation(project(":messages"))
|
||||||
implementation(project(":translations"))
|
implementation(project(":translations"))
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import de.srsoftware.configuration.JsonConfig;
|
|||||||
import de.srsoftware.tools.ColorLogger;
|
import de.srsoftware.tools.ColorLogger;
|
||||||
import de.srsoftware.umbrella.core.ConnectionProvider;
|
import de.srsoftware.umbrella.core.ConnectionProvider;
|
||||||
import de.srsoftware.umbrella.core.UmbrellaException;
|
import de.srsoftware.umbrella.core.UmbrellaException;
|
||||||
|
import de.srsoftware.umbrella.documents.DocumentApi;
|
||||||
import de.srsoftware.umbrella.legacy.LegacyApi;
|
import de.srsoftware.umbrella.legacy.LegacyApi;
|
||||||
import de.srsoftware.umbrella.message.MessageApi;
|
import de.srsoftware.umbrella.message.MessageApi;
|
||||||
import de.srsoftware.umbrella.message.MessageSystem;
|
import de.srsoftware.umbrella.message.MessageSystem;
|
||||||
@@ -59,8 +60,8 @@ public class Application {
|
|||||||
var server = HttpServer.create(new InetSocketAddress(port), 0);
|
var server = HttpServer.create(new InetSocketAddress(port), 0);
|
||||||
server.setExecutor(Executors.newFixedThreadPool(threads));
|
server.setExecutor(Executors.newFixedThreadPool(threads));
|
||||||
|
|
||||||
|
|
||||||
new LegacyApi(userDb,config).bindPath("/legacy").on(server);
|
new LegacyApi(userDb,config).bindPath("/legacy").on(server);
|
||||||
|
new DocumentApi().bindPath("/api/document").on(server);
|
||||||
new MessageApi(messageSystem).bindPath("/api/messages").on(server);
|
new MessageApi(messageSystem).bindPath("/api/messages").on(server);
|
||||||
translationModule.bindPath("/api/translations").on(server);
|
translationModule.bindPath("/api/translations").on(server);
|
||||||
new UserModule(userDb,loginServiceDb,messageSystem).bindPath("/api/user").on(server);
|
new UserModule(userDb,loginServiceDb,messageSystem).bindPath("/api/user").on(server);
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
/* © SRSoftware 2025 */
|
/* © SRSoftware 2025 */
|
||||||
package de.srsoftware.umbrella.core.model;
|
package de.srsoftware.umbrella.core.model;
|
||||||
|
|
||||||
import de.srsoftware.umbrella.core.UmbrellaException;
|
|
||||||
|
|
||||||
import static de.srsoftware.tools.Optionals.allSet;
|
import static de.srsoftware.tools.Optionals.allSet;
|
||||||
import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
|
import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
|
||||||
import static java.text.MessageFormat.format;
|
|
||||||
|
import de.srsoftware.umbrella.core.UmbrellaException;
|
||||||
|
|
||||||
public class EmailAddress {
|
public class EmailAddress {
|
||||||
private final String email;
|
private final String email;
|
||||||
|
|||||||
5
documents/build.gradle.kts
Normal file
5
documents/build.gradle.kts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
description = "Umbrella : Documents"
|
||||||
|
|
||||||
|
dependencies{
|
||||||
|
implementation(project(":core"))
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
/* © SRSoftware 2025 */
|
||||||
|
package de.srsoftware.umbrella.documents;
|
||||||
|
|
||||||
|
public class Constants {
|
||||||
|
private Constants(){}
|
||||||
|
|
||||||
|
public static final String COMPANIES = "companies";
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/* © SRSoftware 2025 */
|
||||||
|
package de.srsoftware.umbrella.documents;
|
||||||
|
|
||||||
|
import static de.srsoftware.umbrella.core.ResponseCode.HTTP_NOT_IMPLEMENTED;
|
||||||
|
import static de.srsoftware.umbrella.documents.Constants.COMPANIES;
|
||||||
|
|
||||||
|
import com.sun.net.httpserver.HttpExchange;
|
||||||
|
import de.srsoftware.tools.Path;
|
||||||
|
import de.srsoftware.umbrella.core.BaseHandler;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class DocumentApi extends BaseHandler {
|
||||||
|
@Override
|
||||||
|
public boolean doGet(Path path, HttpExchange ex) throws IOException {
|
||||||
|
addCors(ex);
|
||||||
|
var head = path.pop();
|
||||||
|
return switch (head){
|
||||||
|
case COMPANIES -> getCompanies(ex);
|
||||||
|
case null, default -> super.doGet(path,ex);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean getCompanies(HttpExchange ex) throws IOException {
|
||||||
|
return sendEmptyResponse(HTTP_NOT_IMPLEMENTED,ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
import { user } from './user.svelte.js';
|
import { user } from './user.svelte.js';
|
||||||
import { Router, Route } from 'svelte-tiny-router';
|
import { Router, Route } from 'svelte-tiny-router';
|
||||||
import Callback from "./routes/user/OidcCallback.svelte";
|
import Callback from "./routes/user/OidcCallback.svelte";
|
||||||
|
import DocList from "./routes/document/List.svelte";
|
||||||
import EditService from "./routes/user/EditService.svelte";
|
import EditService from "./routes/user/EditService.svelte";
|
||||||
import EditUser from "./routes/user/EditUser.svelte";
|
import EditUser from "./routes/user/EditUser.svelte";
|
||||||
import Footer from "./Components/Footer.svelte";
|
import Footer from "./Components/Footer.svelte";
|
||||||
@@ -34,6 +35,8 @@
|
|||||||
{#if user.name }
|
{#if user.name }
|
||||||
<!-- https://github.com/notnotsamuel/svelte-tiny-router -->
|
<!-- https://github.com/notnotsamuel/svelte-tiny-router -->
|
||||||
<Menu />
|
<Menu />
|
||||||
|
<Route path="/" component={User} />
|
||||||
|
<Route path="/document" component={DocList} />
|
||||||
<Route path="/message/settings" component={Messages} />
|
<Route path="/message/settings" component={Messages} />
|
||||||
<Route path="/search" component={Search} />
|
<Route path="/search" component={Search} />
|
||||||
<Route path="/user" component={User} />
|
<Route path="/user" component={User} />
|
||||||
@@ -42,7 +45,9 @@
|
|||||||
<Route path="/user/:user_id/edit" component={EditUser} />
|
<Route path="/user/:user_id/edit" component={EditUser} />
|
||||||
<Route path="/user/oidc/add" component={EditService} />
|
<Route path="/user/oidc/add" component={EditService} />
|
||||||
<Route path="/user/oidc/edit/:serviceName" component={EditService} />
|
<Route path="/user/oidc/edit/:serviceName" component={EditService} />
|
||||||
<Route component={User} />
|
<Route>
|
||||||
|
Not found!
|
||||||
|
</Route>
|
||||||
{:else}
|
{:else}
|
||||||
<Route path="/user/reset/pw" component={ResetPw} />
|
<Route path="/user/reset/pw" component={ResetPw} />
|
||||||
<Route path="/oidc_callback" component={Callback} />
|
<Route path="/oidc_callback" component={Callback} />
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ onMount(fetchModules);
|
|||||||
|
|
||||||
<nav>
|
<nav>
|
||||||
<a onclick={() => router.navigate('/user')}>{t('menu.users')}</a>
|
<a onclick={() => router.navigate('/user')}>{t('menu.users')}</a>
|
||||||
|
<a onclick={() => router.navigate('/document')}>{t('menu.documents')}</a>
|
||||||
<a href="https://svelte.dev/tutorial/svelte/state" target="_blank">{t('menu.tutorial')}</a>
|
<a href="https://svelte.dev/tutorial/svelte/state" target="_blank">{t('menu.tutorial')}</a>
|
||||||
{#each modules as module,i}
|
{#each modules as module,i}
|
||||||
<a href={module.url}>{module.name}</a>
|
<a href={module.url}>{module.name}</a>
|
||||||
|
|||||||
29
frontend/src/routes/document/List.svelte
Normal file
29
frontend/src/routes/document/List.svelte
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<script>
|
||||||
|
import { onMount } from 'svelte';
|
||||||
|
import { t } from '../../translations.svelte.js';
|
||||||
|
|
||||||
|
let company = null;
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
async function loadCompanies(){
|
||||||
|
const url = `${location.protocol}//${location.host.replace('5173','8080')}/api/document/companies`;
|
||||||
|
var resp = await fetch(url,{ credentials: 'include'});
|
||||||
|
if (resp.ok){
|
||||||
|
} else {
|
||||||
|
error = await resp.text();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMount(loadCompanies);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{t('documents.documents')}</legend>
|
||||||
|
{#if error}
|
||||||
|
<div class="error">{error}</div>
|
||||||
|
{/if}
|
||||||
|
<div>
|
||||||
|
{t('documents.select_company')}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
@@ -25,7 +25,6 @@ import jakarta.mail.util.ByteArrayDataSource;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
public class MessageSystem implements PostBox {
|
public class MessageSystem implements PostBox {
|
||||||
public static final System.Logger LOG = System.getLogger(MessageSystem.class.getSimpleName());
|
public static final System.Logger LOG = System.getLogger(MessageSystem.class.getSimpleName());
|
||||||
|
|||||||
@@ -6,10 +6,8 @@ import static java.lang.System.Logger.Level.TRACE;
|
|||||||
import static java.text.MessageFormat.format;
|
import static java.text.MessageFormat.format;
|
||||||
|
|
||||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
public class CombinedMessage {
|
public class CombinedMessage {
|
||||||
private static final System.Logger LOG = System.getLogger(CombinedMessage.class.getSimpleName());
|
private static final System.Logger LOG = System.getLogger(CombinedMessage.class.getSimpleName());
|
||||||
|
|||||||
@@ -7,3 +7,5 @@ include("messages")
|
|||||||
include("translations")
|
include("translations")
|
||||||
include("user")
|
include("user")
|
||||||
include("web")
|
include("web")
|
||||||
|
|
||||||
|
include("documents")
|
||||||
Reference in New Issue
Block a user