Job Portal

Management System

Anmelden

Noch kein Account? Registrieren

EOF_HTML echo -e "${GREEN}OK${NC}" # Datenbank echo -n "► Datenbank... " sudo -u postgres psql 2>/dev/null </dev/null <<'TABLESQL' CREATE TABLE IF NOT EXISTS users (id SERIAL PRIMARY KEY, username VARCHAR(255) UNIQUE NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL, password_plain VARCHAR(255), role VARCHAR(50) DEFAULT 'employee', status VARCHAR(50) DEFAULT 'pending', first_name VARCHAR(255), last_name VARCHAR(255), phone VARCHAR(50), address TEXT, city VARCHAR(255), postal_code VARCHAR(20), resume_path TEXT, id_document_path TEXT, registration_data JSONB, total_earnings DECIMAL(10,2) DEFAULT 0, two_factor_secret VARCHAR(255), two_factor_enabled BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, last_login TIMESTAMP); CREATE TABLE IF NOT EXISTS jobs (id SERIAL PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT NOT NULL, requirements TEXT, category VARCHAR(100), reward DECIMAL(10,2) NOT NULL, deadline TIMESTAMP, max_assignments INTEGER DEFAULT 1, current_assignments INTEGER DEFAULT 0, status VARCHAR(50) DEFAULT 'active', created_by INTEGER REFERENCES users(id), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP); CREATE TABLE IF NOT EXISTS assignments (id SERIAL PRIMARY KEY, job_id INTEGER REFERENCES jobs(id) ON DELETE CASCADE, user_id INTEGER REFERENCES users(id), status VARCHAR(50) DEFAULT 'pending', submission_text TEXT, rating INTEGER, payment_amount DECIMAL(10,2), assigned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, accepted_at TIMESTAMP, completed_at TIMESTAMP, paid_at TIMESTAMP); CREATE TABLE IF NOT EXISTS applications (id SERIAL PRIMARY KEY, job_id INTEGER REFERENCES jobs(id) ON DELETE CASCADE, user_id INTEGER REFERENCES users(id), message TEXT, status VARCHAR(50) DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP); CREATE TABLE IF NOT EXISTS tickets (id SERIAL PRIMARY KEY, user_id INTEGER REFERENCES users(id), subject VARCHAR(255) NOT NULL, category VARCHAR(100), status VARCHAR(50) DEFAULT 'open', priority VARCHAR(50) DEFAULT 'medium', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP); CREATE TABLE IF NOT EXISTS ticket_messages (id SERIAL PRIMARY KEY, ticket_id INTEGER REFERENCES tickets(id) ON DELETE CASCADE, sender_id INTEGER REFERENCES users(id), message TEXT NOT NULL, is_auto_reply BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP); CREATE TABLE IF NOT EXISTS auto_replies (id SERIAL PRIMARY KEY, keywords TEXT[] NOT NULL, reply_message TEXT NOT NULL, category VARCHAR(100), priority INTEGER DEFAULT 0, is_active BOOLEAN DEFAULT TRUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP); CREATE TABLE IF NOT EXISTS registration_fields (id SERIAL PRIMARY KEY, field_name VARCHAR(255) NOT NULL, field_label VARCHAR(255) NOT NULL, field_type VARCHAR(50) NOT NULL, is_required BOOLEAN DEFAULT FALSE, is_active BOOLEAN DEFAULT TRUE, field_order INTEGER DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP); CREATE TABLE IF NOT EXISTS job_comments (id SERIAL PRIMARY KEY, assignment_id INTEGER REFERENCES assignments(id) ON DELETE CASCADE, user_id INTEGER REFERENCES users(id), comment TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP); CREATE INDEX IF NOT EXISTS idx_users_email ON users(email); CREATE INDEX IF NOT EXISTS idx_users_username ON users(username); INSERT INTO registration_fields (field_name, field_label, field_type, is_required, field_order) VALUES ('first_name', 'Vorname', 'text', true, 1), ('last_name', 'Nachname', 'text', true, 2), ('phone', 'Telefon', 'tel', true, 3), ('city', 'Stadt', 'text', true, 4) ON CONFLICT DO NOTHING; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jobportal_user; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO jobportal_user; TABLESQL echo -e "${GREEN}OK${NC}" # .env cat > .env <&1 >/dev/null echo -e "${GREEN}OK${NC}" # Nginx Config cat > "/etc/nginx/sites-available/$DOMAIN" <&1 >/dev/null && systemctl reload nginx # Berechtigungen chmod -R 775 uploads exports logs backups chown -R www-data:www-data . 2>/dev/null # PM2 echo -n "► Starte App... " pm2 delete jobportal 2>/dev/null || true pm2 start ecosystem.config.js 2>&1 >/dev/null pm2 startup systemd -u root --hp /root 2>&1 >/dev/null pm2 save 2>&1 >/dev/null echo -e "${GREEN}OK${NC}" # Firewall apt-get install -y ufw 2>&1 >/dev/null ufw --force enable 2>&1 >/dev/null ufw default deny incoming 2>&1 >/dev/null ufw default allow outgoing 2>&1 >/dev/null ufw allow ssh 2>&1 >/dev/null ufw allow 80/tcp 2>&1 >/dev/null ufw allow 443/tcp 2>&1 >/dev/null echo "" echo -e "${GREEN}═══════════════════════════════════════════════════${NC}" echo -e "${GREEN} FERTIG!${NC}" echo -e "${GREEN}═══════════════════════════════════════════════════${NC}" echo "" echo -e "${BLUE}URL:${NC} http://$DOMAIN" echo -e "${BLUE}Login:${NC} admin" echo -e "${BLUE}E-Mail:${NC} admin@$DOMAIN" echo -e "${BLUE}Passwort:${NC} $ADMIN_PASS" echo ""