diff --git a/frontend/src/app/adminui/edituser/edituser.component.html b/frontend/src/app/adminui/edituser/edituser.component.html
new file mode 100644
index 0000000..88c2ec1
--- /dev/null
+++ b/frontend/src/app/adminui/edituser/edituser.component.html
@@ -0,0 +1,42 @@
+
diff --git a/frontend/src/app/adminui/edituser/edituser.component.scss b/frontend/src/app/adminui/edituser/edituser.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/frontend/src/app/adminui/edituser/edituser.component.spec.ts b/frontend/src/app/adminui/edituser/edituser.component.spec.ts
new file mode 100644
index 0000000..3537722
--- /dev/null
+++ b/frontend/src/app/adminui/edituser/edituser.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { EdituserComponent } from './edituser.component';
+
+describe('EdituserComponent', () => {
+ let component: EdituserComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [EdituserComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(EdituserComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/frontend/src/app/adminui/edituser/edituser.component.ts b/frontend/src/app/adminui/edituser/edituser.component.ts
new file mode 100644
index 0000000..d3eec46
--- /dev/null
+++ b/frontend/src/app/adminui/edituser/edituser.component.ts
@@ -0,0 +1,60 @@
+import {Component, Input, SimpleChanges} from '@angular/core';
+import {FormsModule} from "@angular/forms";
+import axios from "axios";
+import {firstValueFrom} from "rxjs";
+import {DevelopmentStore} from "../../../store/DevelopmentStore";
+import {AuthStore} from "../../../store/authStore";
+
+@Component({
+ selector: 'app-edituser',
+ standalone: true,
+ imports: [
+ FormsModule
+ ],
+ templateUrl: './edituser.component.html',
+ styleUrl: './edituser.component.scss'
+})
+export class EdituserComponent {
+ @Input("username") parsedUsername: string = "";
+ username: string = "";
+ originalPassword: string = "";
+ newPassword: string = "";
+ confirmPassword: string = "";
+
+ constructor(private developmentStore: DevelopmentStore, private authStore: AuthStore) {}
+
+ async saveUser() {
+
+ if(this.newPassword !== this.confirmPassword) {
+ alert("New password and confirm password do not match");
+ return;
+ }
+
+ try {
+ const response = await axios({
+ method: 'post',
+ url: this.developmentStore.getBaseUrl() + 'api/v1/secure/user/update',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Authorization': 'Bearer ' + await firstValueFrom(this.authStore.token$)
+ },
+ data: {
+ username: this.username,
+ originalPassword: this.originalPassword,
+ newPassword: this.newPassword,
+ confirmPassword: this.confirmPassword
+ }
+ });
+ // TODO: Implement backend logic for this
+ console.log("User updated successfully");
+ } catch (error) {
+ console.error(error);
+ }
+ }
+
+ ngOnChanges(changes: SimpleChanges) {
+ if (changes['parsedUsername'] && !this.username) {
+ this.username = changes['parsedUsername'].currentValue;
+ }
+ }
+}