diff --git a/myproject/myapp/migrations/0004_usertokencount.py b/myproject/myapp/migrations/0004_usertokencount.py
new file mode 100644
index 0000000000000000000000000000000000000000..607bae56268e16c1a9ef2cd2bfdda680a395a396
--- /dev/null
+++ b/myproject/myapp/migrations/0004_usertokencount.py
@@ -0,0 +1,24 @@
+# Generated by Django 5.0.1 on 2024-03-25 17:46
+
+import django.db.models.deletion
+from django.conf import settings
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('myapp', '0003_profile'),
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='UserTokenCount',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('token_count', models.IntegerField(default=0)),
+                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+    ]
diff --git a/myproject/myapp/models.py b/myproject/myapp/models.py
index edc97afd52e944d8c8d7dc32fffdd873dc0c94a7..f6d4d5a4be0565350196ddfc818eac196dbc4ef8 100644
--- a/myproject/myapp/models.py
+++ b/myproject/myapp/models.py
@@ -58,14 +58,7 @@ class UserTokenCount(models.Model):
 
     def __str__(self):
         return f'{self.user.username}\'s token count: {self.token_count}'
-    
-# Automatically create a UserTokenCount entry for each user on user creation
-@receiver(post_save, sender=User)
-def create_or_update_user_profile(sender, instance, created, **kwargs):
-    if created:
-        UserTokenCount.objects.get_or_create(user=instance)
-        Profile.objects.get_or_create(user=instance)
-    # instance.profile.save()
+
 
 class Action(Enum):
     UPLOAD_FILE = "The user has successfully uploaded a file."
diff --git a/myproject/myapp/signals.py b/myproject/myapp/signals.py
index e1c9ac65ee31df37419bb984cd2e4594c3ba8e85..4e1b8411d161d969d031bcf5c88d947e1453b139 100644
--- a/myproject/myapp/signals.py
+++ b/myproject/myapp/signals.py
@@ -1,10 +1,11 @@
 from django.db.models.signals import post_save
 from django.contrib.auth.models import User
 from django.dispatch import receiver
-from .models import Profile
+from .models import Profile, UserTokenCount
 
 @receiver(post_save, sender=User)
 def create_or_update_user_profile(sender, instance, created, **kwargs):
     if created:
-        Profile.objects.create(user=instance)
-    instance.profile.save()
+        UserTokenCount.objects.get_or_create(user=instance)
+        Profile.objects.get_or_create(user=instance)
+    instance.profile.save()
\ No newline at end of file
diff --git a/myproject/myapp/urls.py b/myproject/myapp/urls.py
index f7c169ca586946c0e567e5743886c6cf0d40c6c3..49240b9ba18b55d017e5c0e82e7dc9739696f575 100644
--- a/myproject/myapp/urls.py
+++ b/myproject/myapp/urls.py
@@ -1,5 +1,5 @@
 from django.urls import path
-from .views import InstrumentDetectionView, index, users, maintenance, handler404, handler500, terms_conditions, privacy_policy, handling_music_file, pricing, generate_pdf, admin_table
+from .views import InstrumentDetectionView, index, log_fileupload, users, maintenance, handler404, handler500, terms_conditions, privacy_policy, handling_music_file, pricing, generate_pdf, admin_table
 from .payments import create_payment, execute_payment, payment_cancelled, payment_success
 from django.contrib.auth import views as auth_views
 
@@ -26,11 +26,10 @@ urlpatterns = [
     path('instrument_detection/', InstrumentDetectionView.as_view(), name='instrument_detection'),
     path('password_change/', auth_views.PasswordChangeView.as_view(template_name='password_change_form.html'), name='password_change'),
     path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(template_name='password_change_done.html'), name='password_change_done'),
-    # path('user_logout/', auth_views.LogoutView.as_view(next_page='index'), name='user_logout'),
-    path('payment/create/', create_payment, name='create_payment'),
-    path('payment/execute/', execute_payment, name='execute_payment'),
-    path('payment/cancel/', payment_cancelled, name='payment_cancelled'),
-    path('payment_success/', payment_success, name='success'),
+
+    # Logging
+    path('log_fileupload', log_fileupload, name='log_fileupload'),
+
 
     # Authentication
     path('login/', CustomLoginView.as_view(), name='login'),
diff --git a/myproject/myapp/views.py b/myproject/myapp/views.py
index 3aab0b85ae4a7ae0220e8dadf6c6656f6e5b3542..40b209f8e69fe66fa21e32fe37ccc974471ac001 100644
--- a/myproject/myapp/views.py
+++ b/myproject/myapp/views.py
@@ -199,54 +199,28 @@ def handler500(request, *args, **kwargs):
 def maintenance(request):
     return render(request, 'maintenance.html')
 
-# def user_login(request):
-#     if request.method == 'POST':
-#         form = LoginForm(request.POST)
-
-#         if form.is_valid():
-#             username = form.cleaned_data.get('username')
-#             password = form.cleaned_data.get('password')
-
-#             user = authenticate(request, username=username, password=password)  # Passing request along with username and password
-
-#             if user:
-#                 login(request, user=user)  # Passing request along with user
-#                 return redirect('users')
-#             else:
-#                 messages.error(request, 'Invalid username or password.')
-#         else:
-#             pass
-
-#     else:
-#         form = LoginForm()
-#     return render(request, 'login.html', {'form': form})
-
-
-# def register(request):
-#     if request.method == 'POST':
-#         form = CustomRegistrationForm(request.POST)
-#         if form.is_valid():
-#             form.save()
-#             return redirect('user_login')
-#     else:
-#         form = CustomRegistrationForm()
-
-#     return render(request, 'register.html', {'form': form})
-
-# def user_logout(request):
-#     logout(request)
-#     return redirect('user_login')
-
 
 # Authentication
 class RegisterView(generic.CreateView):
     form_class = UserRegisterForm
-    success_url = reverse_lazy('login')
+    success_url = reverse_lazy('index')
     template_name = 'registration/register.html'
 
     def form_valid(self, form):
         response = super().form_valid(form)
-        Profile.objects.create(user=self.object, user_type=0)  # Default user type as Basic User
+        user = self.object  # Grab the user instance
+
+        # Ensure the user is active; this line might be redundant if you're sure users are active by default
+        user.is_active = True
+        user.save()
+
+        # Check if the Profile exists, and if not, create it
+        if not Profile.objects.filter(user=user).exists():
+            Profile.objects.create(user=user, user_type=0)  # Default user type as Basic User
+
+        # Log the user in
+        login(self.request, user)
+
         return response
     
 
diff --git a/myproject/myproject/settings.py b/myproject/myproject/settings.py
index 5bb1e5500b386eb2343bb0efe23931a689bb39ce..d1a979942ec997ca8903b0621d1714bc016774fd 100644
--- a/myproject/myproject/settings.py
+++ b/myproject/myproject/settings.py
@@ -173,6 +173,7 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
 IMAGE_URL = 'static/src/images/'
 
 LOGIN_REDIRECT_URL = '/'
+LOGOUT_REDIRECT_URL = '/'
 
 
 #PayPal API settings