login
This commit is contained in:
parent
9b5ee500d0
commit
6c47477da1
|
@ -5,7 +5,7 @@ namespace App\Http\Controllers;
|
|||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
class AuthController extends Controller
|
||||
{
|
||||
protected $apiBaseUrl = 'http://192.168.100.6:8081/api';
|
||||
|
@ -21,43 +21,34 @@ class AuthController extends Controller
|
|||
/**
|
||||
* Handle login form submission by calling the API
|
||||
*/
|
||||
public function login(Request $request)
|
||||
{
|
||||
$url = "{$this->apiBaseUrl}/cms/login_password";
|
||||
$csrfToken = $request->session()->token();
|
||||
public function login(Request $request)
|
||||
{
|
||||
$credentials = $request->only('username', 'password');
|
||||
|
||||
try {
|
||||
$response = Http::withHeaders([
|
||||
'X-CSRF-TOKEN' => $csrfToken,
|
||||
'Accept' => 'application/json',
|
||||
])->post($url, [
|
||||
'username' => $request->input('username'),
|
||||
'password' => $request->input('password'),
|
||||
]);
|
||||
if (Auth::attempt($credentials)) {
|
||||
$request->session()->regenerate();
|
||||
$user = Auth::user();
|
||||
|
||||
$data = $response->json();
|
||||
|
||||
// Log the full response for debugging
|
||||
Log::info('Login API Response: ', [$data]);
|
||||
|
||||
if ($response->successful() && isset($data['code']) && $data['code'] === 200) {
|
||||
if (isset($data['data']) && isset($data['data']['access_token'])) {
|
||||
session(['token' => $data['data']['access_token']]);
|
||||
return redirect()->intended(route('my-profile'));
|
||||
} elseif (isset($data['data']['prompt_password'])) {
|
||||
session(['admin_uuid' => $data['data']['admin_uuid']]);
|
||||
return redirect()->route('password.change.form');
|
||||
} else {
|
||||
return redirect()->back()->withErrors(['login' => 'Invalid API response or no token received.']);
|
||||
}
|
||||
}
|
||||
|
||||
return redirect()->back()->withErrors(['login' => $data['message'] ?? 'Login failed.']);
|
||||
} catch (\Exception $e) {
|
||||
Log::error('Login Exception: ' . $e->getMessage());
|
||||
return redirect()->back()->withErrors(['login' => 'Login request failed: ' . $e->getMessage()]);
|
||||
}
|
||||
// Always redirect to my-profile route, let the route's controller handle the user
|
||||
return redirect()->route('my-profile');
|
||||
}
|
||||
return redirect()->back()->with('error', 'Invalid username or password');
|
||||
}
|
||||
|
||||
public function showMyProfile()
|
||||
{
|
||||
// Fetch the authenticated user
|
||||
$user = Auth::user();
|
||||
|
||||
// If no user is authenticated, redirect to login
|
||||
if (!$user) {
|
||||
return redirect()->route('login')->with('error', 'Please log in to view your profile.');
|
||||
}
|
||||
|
||||
// Pass the user to the view
|
||||
return view('pages.my-profile', compact('user'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show the change password form
|
||||
|
@ -133,4 +124,6 @@ class AuthController extends Controller
|
|||
return redirect()->route('login')->with('success', 'Logged out successfully');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,65 +1,64 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./docker/php/Dockerfile
|
||||
container_name: unioil-app
|
||||
restart: unless-stopped
|
||||
context: ./docker/php
|
||||
dockerfile: Dockerfile
|
||||
container_name: frontend-app
|
||||
restart: always
|
||||
working_dir: /var/www
|
||||
volumes:
|
||||
- .:/var/www/html
|
||||
- ./storage:/var/www/html/storage
|
||||
- ./bootstrap/cache:/var/www/html/bootstrap/cache
|
||||
depends_on:
|
||||
db_mysql:
|
||||
condition: service_healthy
|
||||
command: [ "sh", "-c", "/var/www/html/docker/php/entrypoint.sh" ]
|
||||
- .:/var/www
|
||||
|
||||
command: >
|
||||
/bin/sh -c 'mkdir -p /var/www/storage /var/www/bootstrap/cache &&
|
||||
chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache &&
|
||||
chmod -R 775 /var/www/storage /var/www/bootstrap/cache &&
|
||||
composer install --no-dev --optimize-autoloader &&
|
||||
php-fpm'
|
||||
healthcheck:
|
||||
test: [ "CMD", "pgrep", "php-fpm" ]
|
||||
test: [ "CMD", "sh", "-c", "netstat -an | grep 9000 > /dev/null || exit 1" ]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
networks:
|
||||
- app_network
|
||||
|
||||
db_mysql:
|
||||
image: mysql:8.2
|
||||
container_name: unioil-db
|
||||
restart: unless-stopped
|
||||
- frontend-network
|
||||
- unioil-mobile-api_backend-network
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: newpassword
|
||||
MYSQL_DATABASE: unioil-database
|
||||
MYSQL_USER: rootuser
|
||||
MYSQL_PASSWORD: password
|
||||
volumes:
|
||||
- mysql-data:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
networks:
|
||||
- app_network
|
||||
- DB_HOST=db_mysql
|
||||
- DB_PORT=3306
|
||||
- DB_DATABASE=unioil-database
|
||||
- DB_USERNAME=rootuser
|
||||
- DB_PASSWORD=password
|
||||
- CACHE_DRIVER=file
|
||||
- API_URL=http://backend-web:8081
|
||||
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
container_name: unioil-nginx
|
||||
restart: unless-stopped
|
||||
web-frontend:
|
||||
image: nginx:1.26.3-alpine
|
||||
container_name: web-frontend
|
||||
restart: always
|
||||
ports:
|
||||
- "8000:80"
|
||||
expose:
|
||||
- "80"
|
||||
volumes:
|
||||
- .:/var/www/html
|
||||
- .:/var/www
|
||||
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
depends_on:
|
||||
app:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "-f", "http://localhost" ]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
networks:
|
||||
- app_network
|
||||
|
||||
volumes:
|
||||
mysql-data:
|
||||
storage-volume:
|
||||
driver: local
|
||||
- frontend-network
|
||||
- unioil-mobile-api_backend-network
|
||||
|
||||
networks:
|
||||
app_network:
|
||||
frontend-network:
|
||||
driver: bridge
|
||||
unioil-mobile-api_backend-network:
|
||||
external: true
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
root /var/www/html/public;
|
||||
root /var/www/public;
|
||||
index index.php index.html;
|
||||
|
||||
location / {
|
||||
|
@ -10,10 +9,10 @@ server {
|
|||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
include fastcgi_params;
|
||||
fastcgi_pass app:9000; # laravel app container
|
||||
fastcgi_pass frontend-app:9000;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
location ~ /\.ht {
|
||||
|
@ -22,4 +21,4 @@ server {
|
|||
|
||||
error_log /var/log/nginx/error.log;
|
||||
access_log /var/log/nginx/access.log;
|
||||
}
|
||||
}
|
|
@ -1,29 +1,33 @@
|
|||
# Base image
|
||||
FROM php:8.3-fpm-alpine
|
||||
FROM php:8.3-fpm
|
||||
|
||||
# Install required PHP extensions
|
||||
RUN docker-php-ext-install pdo pdo_mysql bcmath
|
||||
# Install system dependencies
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpng-dev \
|
||||
libjpeg-dev \
|
||||
libfreetype6-dev \
|
||||
zip \
|
||||
unzip \
|
||||
git \
|
||||
curl \
|
||||
libzip-dev \
|
||||
net-tools \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install gd pdo pdo_mysql zip
|
||||
|
||||
# Install Composer
|
||||
COPY --from=composer:2.7 /usr/bin/composer /usr/bin/composer
|
||||
|
||||
# Install Node.js and npm
|
||||
RUN apk add --no-cache nodejs npm
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /var/www/html
|
||||
WORKDIR /var/www
|
||||
|
||||
# Copy app files
|
||||
COPY . /var/www/html
|
||||
# Copy application code
|
||||
COPY . /var/www
|
||||
|
||||
# Ensure entrypoint script is executable
|
||||
RUN chmod +x /var/www/html/docker/php/entrypoint.sh
|
||||
# Set permissions
|
||||
RUN chown -R www-data:www-data /var/www \
|
||||
&& chmod -R 755 /var/www
|
||||
|
||||
# Set permissions for app files
|
||||
RUN chown -R www-data:www-data /var/www/html
|
||||
|
||||
# Expose PHP-FPM port
|
||||
# Expose port
|
||||
EXPOSE 9000
|
||||
|
||||
# Start PHP-FPM (handled in entrypoint.sh)
|
||||
CMD ["sh", "-c", "/var/www/html/docker/php/entrypoint.sh"]
|
||||
CMD ["php-fpm"]
|
|
@ -25,6 +25,10 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
@if (session('error_username'))
|
||||
<span style="color: red;">{{ session('error_username') }}</span>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('login') }}">
|
||||
@csrf
|
||||
<div class="mb-3">
|
||||
|
|
|
@ -24,9 +24,7 @@ Route::get('/change-password', [AuthController::class, 'showChangePasswordForm']
|
|||
Route::post('/change-password', [AuthController::class, 'changePassword'])->name('password.change');
|
||||
|
||||
// Redirect to my-profile (adjust as needed)
|
||||
Route::get('/my-profile', function () {
|
||||
return view('pages.my-profile'); // Replace with your actual profile view or controller
|
||||
})->name('my-profile');
|
||||
Route::get('/my-profile', [AuthController::class, 'showMyProfile'])->name('my-profile')->middleware('auth');
|
||||
// Handle logout
|
||||
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
|
||||
|
||||
|
|
Loading…
Reference in New Issue