diff --git a/templates/base.html b/templates/base.html
index 05a0c58436010ae579663265fbe3bb2271de8088..d34e131f7bed438d0494b269a079ddcb39c25aed 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -17,15 +17,16 @@
       }
     </style>
     <link rel="icon" type="image/x-icon" href="{% static 'images/favicon.ico' %}">
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/3.0.9/purify.min.js"></script>
   </head>
 
   <body>
     {% include 'components/navbar.html' %}
 
-    <div class="container mx-auto pt-32 min-h-screen flex flex-col justify-between">
+    <div class="pt-32 min-h-screen flex flex-col justify-between w-full">
       {% block content %}
       {% endblock %}
-      <footer class="bg-gray-100 text-center py-3 mt-4">
+      <footer class="bg-gray-100 text-center py-3 mt-4 w-full">
         <p>&copy; 2025 Andrew Devito Aryo - 2306152494</p>
       </footer>
     </div>
diff --git a/user/models.py b/user/models.py
index f955b1803536ca4e9f9b990e84e5a26b15242352..b0cbf0d5aa82a9aed8d167bde56cd80a6b54261a 100644
--- a/user/models.py
+++ b/user/models.py
@@ -5,6 +5,16 @@ from django.utils import timezone
 from django.core.exceptions import ValidationError
 
 class ExtendedUser(AbstractUser):
+    
+    def clean_tanggal_lahir(value):
+        age = (timezone.now().date() - value).days / 365.25
+        print(age)
+        if age < 12:
+            print('Usia pengguna minimal 12 tahun.')
+            raise ValidationError('Usia pengguna minimal 12 tahun.')
+            
+
+    
     enum_kategori = {
         'Elektronik': 'Elektronik',
         'Fashion': 'Fashion',
@@ -37,7 +47,8 @@ class ExtendedUser(AbstractUser):
             RegexValidator(
                 regex=r'^\d{4}-\d{2}-\d{2}$',
                 message='Tanggal lahir harus dalam format YYYY-MM-DD.'
-            )
+            ),
+            clean_tanggal_lahir
         ]
     )
     nomor_hp = models.CharField(
@@ -46,7 +57,7 @@ class ExtendedUser(AbstractUser):
             RegexValidator(
                 regex=r'^62\d{6,13}$',
                 message='Nomor HP harus dalam format (kode negara - nomor telepon) dengan panjang minimal 8 dan maksimal 15. Contoh: 62123456, bukan +62123456 dan 62-12345.'
-            )
+            ),
         ]
     )
     email = models.CharField(
@@ -63,7 +74,15 @@ class ExtendedUser(AbstractUser):
             MaxLengthValidator(1000)
         ]
     )
-    id_penjual = models.IntegerField()
+    id_penjual = models.CharField(
+        max_length=10,
+        validators=[
+            RegexValidator(
+                regex=r'^S-\d{8}$',
+                message='ID Penjual harus diawali dengan "S-" diikuti oleh 8 angka.'
+            )
+        ]
+    )
     kategori_produk = models.CharField(
         max_length=50,
         choices=[(tag, tag) for tag in enum_kategori.keys()]
@@ -79,11 +98,3 @@ class ExtendedUser(AbstractUser):
         related_name="extendeduser_permissions",  # Custom related_name
         blank=True
     )
-    
-    def clean(self):
-        super().clean()
-        if self.tanggal_lahir:
-            age = (timezone.now().date() - self.tanggal_lahir).days / 365.25
-            if age < 12:
-                raise ValidationError('Usia pengguna minimal 12 tahun.')
-            
diff --git a/user/templates/login.html b/user/templates/login.html
index 81fa9c3714916a9010503f60b30bf13453c564c1..a6e83bae71256697b97399a97aa8c1578d673988 100644
--- a/user/templates/login.html
+++ b/user/templates/login.html
@@ -16,7 +16,23 @@
         {% endfor %}
       {% endif %}
 
+      <a href="/user/register"><p class="text-xs text-blue-700 mt-2">Don't have an account? Register here</p></a>
+
       {% include 'components/button.html' with text='Login' type='submit' %}
     </form>
   </div>
+  <script>
+    document.addEventListener('DOMContentLoaded', function () {
+      const form = document.querySelector('form')
+    
+      form.addEventListener('submit', function (event) {
+        // Select all input fields
+        const inputs = form.querySelectorAll('input, textarea, select')
+    
+        inputs.forEach((input) => {
+          input.value = DOMPurify.sanitize(input.value) // Clean input before sending
+        })
+      })
+    })
+  </script>
 {% endblock %}
diff --git a/user/templates/register.html b/user/templates/register.html
index c06d44c828565b12bf3f2daa3c50a4b01931e4af..d7fc24010a4deefee6ce541988790e8b8606600b 100644
--- a/user/templates/register.html
+++ b/user/templates/register.html
@@ -32,12 +32,23 @@
         </div>
       {% endfor %}
 
-      {% comment %} Map Messages {% endcomment %}
-      {% for message in messages %}
-        {{message}}
-      {% endfor %}
+      <a href="/user/login"><p class="text-xs text-blue-700 mt-2">Already have an account? Login here</p></a>
 
       {% include 'components/button.html' with type='submit' text='Register' %}
     </form>
   </div>
+  <script>
+    document.addEventListener('DOMContentLoaded', function () {
+      const form = document.querySelector('form')
+    
+      form.addEventListener('submit', function (event) {
+        // Select all input fields
+        const inputs = form.querySelectorAll('input, textarea, select')
+    
+        inputs.forEach((input) => {
+          input.value = DOMPurify.sanitize(input.value) // Clean input before sending
+        })
+      })
+    })
+  </script>
 {% endblock %}
diff --git a/user/views.py b/user/views.py
index 7134cb47d3bcad5ecae0e498c50dc33fe2eeaeb9..d8a5728f46bd0d84add3269d2f95ed7e75d0059c 100644
--- a/user/views.py
+++ b/user/views.py
@@ -38,6 +38,7 @@ def register_view(request):
         if form.is_valid()  :
             print(form.cleaned_data)
             form.save()
+            request.session.flush()
             messages.success(request, "Account created successfully. Please log in.")
             return redirect("login")  # Redirect to login page
         else: