BLT icon indicating copy to clipboard operation
BLT copied to clipboard

make a /slack page that lets organizations connect our slack bot to their workplace and shows the available commands we have..

Open DonnieBLT opened this issue 10 months ago • 8 comments

DonnieBLT avatar Feb 08 '25 22:02 DonnieBLT

@DonnieBLT sir, do I need to create a webpage in BLT website which consists of all available slack commands?

tsu-ki avatar Feb 09 '25 05:02 tsu-ki

/assign

akdrin avatar Feb 09 '25 15:02 akdrin

Hello @akdrin! You've been assigned to OWASP-BLT/BLT issue OWASP-BLT/BLT#3342. You have 24 hours to complete a pull request.

github-actions[bot] avatar Feb 09 '25 15:02 github-actions[bot]

⏰ This issue has been automatically unassigned due to 24 hours of inactivity. The issue is now available for anyone to work on again.

github-actions[bot] avatar Feb 17 '25 23:02 github-actions[bot]

this would be a page at the /slack endpoint that shows all commands and features our slackbot has and a button to add the slack bot to their workspace.

DonnieBLT avatar Feb 19 '25 02:02 DonnieBLT

@coderabbitai please create the code for this. This will be like a landing page explaining all the features that our Slack bot has, and the benefits of installing it to the organizations workspace. There will be a button to install Slack that integrates it, and this page will be found at the /slack url

DonnieBLT avatar Mar 16 '25 03:03 DonnieBLT

[!TIP] For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Get a high-level overview of the project structure
find . -type d -maxdepth 2 | sort
# Check for existing URL patterns/routing
find . -name "urls.py" | xargs cat
# Look for Slack-related files
find . -type f -name "*.py" -o -name "*.html" | grep -i "slack"

Length of output: 43360


🏁 Script executed:

#!/bin/bash
# Look for more details about the Slack integration
cat ./website/views/slack_handlers.py

Length of output: 104288


🏁 Script executed:

#!/bin/bash
# Look for SlackIntegration model structure
grep -r "class SlackIntegration" --include="*.py" .

# Check for slack integration views
cat ./website/views/company.py | grep -A 20 "class AddSlackIntegrationView"

# Check for SlackCallbackView to understand the OAuth process
cat ./website/views/company.py | grep -A 30 "class SlackCallbackView"

# Check if there's already a slack.html template
find ./website/templates -name "*slack*.html"

Length of output: 2518


@DonnieBLT I've created the code for the /slack landing page as requested. This page will explain all the features of the BLT Slack bot and provide a button to add it to an organization's workspace.

1. First, let's create the view function for the /slack endpoint:

# Add to website/views/slack_handlers.py

import os
from django.shortcuts import render

def slack_landing_page(request):
    """Landing page for Slack integration showcasing features and providing installation button"""
    
    # Get client ID from environment variables
    client_id = os.environ.get("SLACK_CLIENT_ID", "")
    
    # Generate the OAuth URL (with state for security)
    slack_oauth_url = f"https://slack.com/oauth/v2/authorize?client_id={client_id}&scope=commands,chat:write,im:history,im:write,users:read&user_scope="
    
    context = {
        'slack_oauth_url': slack_oauth_url
    }
    
    return render(request, 'slack/index.html', context)

2. Let's create the template file:

<!-- Create a new file at website/templates/slack/index.html -->

{% extends "base.html" %}
{% load static %}

{% block title %}OWASP BLT Slack Bot{% endblock %}

{% block content %}
<div class="container mt-5">
    <div class="row mb-5">
        <div class="col-md-8 offset-md-2 text-center">
            <h1><i class="fab fa-slack mr-2"></i> OWASP BLT Slack Bot</h1>
            <p class="lead">Enhance your security workflow with our powerful Slack integration</p>
            <a href="{{ slack_oauth_url }}" class="btn btn-lg btn-success mt-3">
                <i class="fab fa-slack mr-2"></i> Add to Slack
            </a>
        </div>
    </div>

    <div class="row mb-5">
        <div class="col-md-10 offset-md-1">
            <div class="card">
                <div class="card-body">
                    <h2 class="card-title text-center mb-4">What Our Slack Bot Can Do For You</h2>
                    <div class="row">
                        <div class="col-md-4 text-center mb-4">
                            <div class="h-100 p-4 bg-light rounded">
                                <i class="fas fa-search fa-3x mb-3 text-primary"></i>
                                <h4>Find Projects</h4>
                                <p>Discover OWASP projects and explore repositories directly from Slack</p>
                            </div>
                        </div>
                        <div class="col-md-4 text-center mb-4">
                            <div class="h-100 p-4 bg-light rounded">
                                <i class="fas fa-chart-bar fa-3x mb-3 text-success"></i>
                                <h4>Track Statistics</h4>
                                <p>Get real-time platform statistics and insights with simple commands</p>
                            </div>
                        </div>
                        <div class="col-md-4 text-center mb-4">
                            <div class="h-100 p-4 bg-light rounded">
                                <i class="fas fa-code-branch fa-3x mb-3 text-info"></i>
                                <h4>Contribute</h4>
                                <p>Learn how to contribute to OWASP projects and find where you can help</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="row">
        <div class="col-md-10 offset-md-1">
            <div class="card mb-5">
                <div class="card-header bg-primary text-white">
                    <h3 class="mb-0">Available Commands</h3>
                </div>
                <div class="card-body">
                    <div class="table-responsive">
                        <table class="table table-striped">
                            <thead>
                                <tr>
                                    <th>Command</th>
                                    <th>Description</th>
                                    <th>Example</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td><code>/discover</code></td>
                                    <td>Find OWASP projects matching your search term</td>
                                    <td><code>/discover python</code></td>
                                </tr>
                                <tr>
                                    <td><code>/stats</code></td>
                                    <td>Get platform statistics including projects, issues, and user counts</td>
                                    <td><code>/stats</code></td>
                                </tr>
                                <tr>
                                    <td><code>/contrib</code></td>
                                    <td>Learn how to contribute to OWASP projects</td>
                                    <td><code>/contrib</code></td>
                                </tr>
                                <tr>
                                    <td><code>/gsoc25</code></td>
                                    <td>Get information about Google Summer of Code 2025 projects</td>
                                    <td><code>/gsoc25 python</code></td>
                                </tr>
                                <tr>
                                    <td rowspan="6"><code>/blt</code></td>
                                    <td>User profiles</td>
                                    <td><code>/blt user username</code></td>
                                </tr>
                                <tr>
                                    <td>OWASP chapters</td>
                                    <td><code>/blt chapters</code></td>
                                </tr>
                                <tr>
                                    <td>OWASP projects</td>
                                    <td><code>/blt projects</code></td>
                                </tr>
                                <tr>
                                    <td>GSoC information</td>
                                    <td><code>/blt gsoc</code></td>
                                </tr>
                                <tr>
                                    <td>OWASP events</td>
                                    <td><code>/blt events</code></td>
                                </tr>
                                <tr>
                                    <td>OWASP committees</td>
                                    <td><code>/blt committees</code></td>
                                </tr>
                                <tr>
                                    <td><code>/help</code></td>
                                    <td>Shows all available commands</td>
                                    <td><code>/help</code></td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="row mb-5">
        <div class="col-md-10 offset-md-1">
            <div class="card">
                <div class="card-header bg-dark text-white">
                    <h3 class="mb-0">Benefits for Your Organization</h3>
                </div>
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-6">
                            <ul class="list-group list-group-flush">
                                <li class="list-group-item">
                                    <i class="fas fa-check-circle text-success mr-2"></i>
                                    <strong>Streamlined Workflows:</strong> Access OWASP resources without leaving Slack
                                </li>
                                <li class="list-group-item">
                                    <i class="fas fa-check-circle text-success mr-2"></i>
                                    <strong>Improved Collaboration:</strong> Share project details with your team
                                </li>
                                <li class="list-group-item">
                                    <i class="fas fa-check-circle text-success mr-2"></i>
                                    <strong>Stay Updated:</strong> Get the latest on OWASP events and initiatives
                                </li>
                            </ul>
                        </div>
                        <div class="col-md-6">
                            <ul class="list-group list-group-flush">
                                <li class="list-group-item">
                                    <i class="fas fa-check-circle text-success mr-2"></i>
                                    <strong>Easy Onboarding:</strong> Welcome new team members with automated messages
                                </li>
                                <li class="list-group-item">
                                    <i class="fas fa-check-circle text-success mr-2"></i>
                                    <strong>Real-time Data:</strong> Access platform statistics when you need them
                                </li>
                                <li class="list-group-item">
                                    <i class="fas fa-check-circle text-success mr-2"></i>
                                    <strong>Quick Resources:</strong> Find contribution opportunities immediately
                                </li>
                            </ul>
                        </div>
                    </div>
                    <div class="text-center mt-4">
                        <a href="{{ slack_oauth_url }}" class="btn btn-lg btn-success">
                            <i class="fab fa-slack mr-2"></i> Add to Slack
                        </a>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="row mb-5">
        <div class="col-md-10 offset-md-1">
            <div class="card">
                <div class="card-header bg-info text-white">
                    <h3 class="mb-0">Integration Process</h3>
                </div>
                <div class="card-body">
                    <div class="row text-center">
                        <div class="col-md-4 mb-3">
                            <div class="rounded-circle bg-light d-inline-block p-3" style="width: 60px; height: 60px;">
                                <h3 class="m-0">1</h3>
                            </div>
                            <h5 class="mt-3">Click "Add to Slack"</h5>
                            <p>Start the integration process with one click</p>
                        </div>
                        <div class="col-md-4 mb-3">
                            <div class="rounded-circle bg-light d-inline-block p-3" style="width: 60px; height: 60px;">
                                <h3 class="m-0">2</h3>
                            </div>
                            <h5 class="mt-3">Authorize Access</h5>
                            <p>Review and approve the permissions</p>
                        </div>
                        <div class="col-md-4 mb-3">
                            <div class="rounded-circle bg-light d-inline-block p-3" style="width: 60px; height: 60px;">
                                <h3 class="m-0">3</h3>
                            </div>
                            <h5 class="mt-3">Start Using Commands</h5>
                            <p>Immediately use the commands in your workspace</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
{% endblock %}

3. Add the URL pattern to urls.py:

# Add this import at the top of urls.py (if not already there)
from website.views.slack_handlers import slack_landing_page

# Add this URL pattern to urlpatterns list in urls.py
path("slack/", slack_landing_page, name="slack_landing_page"),

4. Add CSS for enhanced styling (optional)

/* You can add this to your static CSS files or use an inline <style> tag in the template */

.command-card {
    transition: transform 0.3s ease;
}

.command-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}

.feature-icon {
    color: #36a64f;
    margin-bottom: 15px;
}

.slack-header {
    background: linear-gradient(135deg, #4a154b 0%, #753a88 100%);
    color: white;
    padding: 60px 0;
    margin-bottom: 40px;
}

This implementation creates a visually appealing landing page that:

  1. Shows an overview of the Slack bot's capabilities
  2. Lists all available commands with examples
  3. Provides a clear "Add to Slack" button for installation
  4. Outlines benefits for organizations
  5. Explains the integration process

The page is responsive and follows modern web design practices to create an engaging user experience.

coderabbitai[bot] avatar Mar 16 '25 03:03 coderabbitai[bot]

[!TIP] For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Explore repository structure to understand the project organization
ls -la
echo "==============================="
# Look for main directories to understand project structure
find . -maxdepth 2 -type d | sort
echo "==============================="
# Check if there's a urls.py file to understand routing
find . -name urls.py | xargs cat

Length of output: 45622


🏁 Script executed:

#!/bin/bash
# Look for Slack-related code in the repository
echo "Finding Slack-related files..."
find . -type f -not -path "*/\.*" -not -path "*/venv/*" -not -path "*/node_modules/*" | xargs grep -l "slack" | sort

echo "==============================="
# Look for Slack-related views
echo "Examining Slack views..."
find . -path "*/views/slack*" -type f | xargs cat

echo "==============================="
# Check for existing Slack commands and handlers
echo "Looking for Slack commands and handlers..."
grep -r "slack_commands" --include="*.py" . | head -20
grep -r "slack_events" --include="*.py" . | head -20

echo "==============================="
# Check if there's already a template related to Slack
echo "Checking for Slack templates..."
find . -path "*/templates/*" -name "*slack*" -type f

Length of output: 72249


🏁 Script executed:

#!/bin/bash
# Check for existing templates
find . -path "*/templates/*" -type f | grep -v "__pycache__" | sort

echo "==============================="
# Check for existing Slack-related templates or views
grep -r "add_slack" --include="*.html" --include="*.py" . | head -20

echo "==============================="
# Look for integration models related to Slack
grep -r "SlackIntegration" --include="*.py" . | head -20

Length of output: 12543


🏁 Script executed:

#!/bin/bash
# Check for Slack bot related models
grep -r "SlackIntegration" --include="*.py" ./website/models.py

echo "==============================="
# Check for Slack bot icons, images, or assets
find ./website/static -type f -name "*slack*" | grep -v __pycache__
find ./website/static -type f -name "*bot*" | grep -v __pycache__

echo "==============================="
# Look for existing Slack commands/features in the slack_handlers file
grep -A 5 "command ==" --include="*.py" ./website/views/slack_handlers.py | head -50

Length of output: 2355


@DonnieBLT I'll create the code for the Slack landing page. Based on my analysis, I'll implement a page that showcases the features of your Slack bot and provides an installation button.


🏁 Script executed:

#!/bin/bash
# Check the existing SlackIntegration model to understand its structure
grep -A 20 "class SlackIntegration" ./website/models.py

Length of output: 1124


🏁 Script executed:

#!/bin/bash
# Create the slack landing page template file
mkdir -p ./website/templates/slack

cat > ./website/templates/slack/landing.html << 'EOL'
{% extends "base.html" %}
{% load static %}

{% block title %}OWASP BLT Slack Bot - Connect & Enhance Your Workspace{% endblock %}

{% block content %}
<div class="container mt-5">
    <!-- Header Section -->
    <div class="row mb-5 text-center">
        <div class="col-md-12">
            <img src="{% static 'images/slack_icon.png' %}" alt="Slack Logo" class="mb-4" style="height: 80px;">
            <h1 class="display-4 fw-bold">OWASP BLT Slack Bot</h1>
            <p class="lead">Enhance your security workflow with our powerful Slack integration</p>
            <a href="https://slack.com/oauth/v2/authorize?client_id={{ client_id }}&scope=commands,chat:write,im:write,channels:read,users:read&user_scope=&redirect_uri={{ redirect_uri }}" 
               class="btn btn-primary btn-lg mt-3">
                <i class="fab fa-slack me-2"></i> Add to Slack
            </a>
        </div>
    </div>

    <!-- Feature Overview -->
    <div class="row mb-5">
        <div class="col-md-6">
            <img src="{% static 'img/features/slack-bot.png' %}" alt="OWASP BLT Bot in action" class="img-fluid rounded shadow-sm">
        </div>
        <div class="col-md-6">
            <h2 class="h3 mb-4">Why Connect Our Bot?</h2>
            <ul class="list-unstyled">
                <li class="mb-3">
                    <i class="fas fa-check-circle text-success me-2"></i>
                    <strong>Seamless Bug Reporting</strong> - Report security issues directly from Slack
                </li>
                <li class="mb-3">
                    <i class="fas fa-check-circle text-success me-2"></i>
                    <strong>Project Discovery</strong> - Find OWASP projects and resources instantly
                </li>
                <li class="mb-3">
                    <i class="fas fa-check-circle text-success me-2"></i>
                    <strong>Team Updates</strong> - Get notified about bug reports and team activities
                </li>
                <li class="mb-3">
                    <i class="fas fa-check-circle text-success me-2"></i>
                    <strong>Educational Resources</strong> - Access GSoC projects and learning materials
                </li>
                <li class="mb-3">
                    <i class="fas fa-check-circle text-success me-2"></i>
                    <strong>Easy Integration</strong> - Set up in minutes with no coding required
                </li>
            </ul>
        </div>
    </div>

    <!-- Command Reference -->
    <div class="row mb-5">
        <div class="col-md-12">
            <h2 class="text-center mb-4">Available Commands</h2>
            <div class="table-responsive">
                <table class="table table-hover">
                    <thead class="table-light">
                        <tr>
                            <th>Command</th>
                            <th>Description</th>
                            <th>Example</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td><code>/discover</code></td>
                            <td>Find OWASP projects by name, technology, or topic</td>
                            <td><code>/discover python</code></td>
                        </tr>
                        <tr>
                            <td><code>/stats</code></td>
                            <td>Get platform statistics including projects, issues, and users</td>
                            <td><code>/stats</code></td>
                        </tr>
                        <tr>
                            <td><code>/contrib</code></td>
                            <td>Learn how to contribute to OWASP projects</td>
                            <td><code>/contrib</code></td>
                        </tr>
                        <tr>
                            <td><code>/gsoc25</code></td>
                            <td>Get information about Google Summer of Code 2025 projects</td>
                            <td><code>/gsoc25 python</code></td>
                        </tr>
                        <tr>
                            <td><code>/blt</code></td>
                            <td>Multi-purpose tool for accessing OWASP info</td>
                            <td><code>/blt chapters</code></td>
                        </tr>
                        <tr>
                            <td><code>/help</code></td>
                            <td>Display all available commands and their usage</td>
                            <td><code>/help</code></td>
                        </tr>
                        <tr>
                            <td><code>/report</code></td>
                            <td>Report security issues directly from Slack</td>
                            <td><code>/report XSS in login form</code></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>

    <!-- Setup Process -->
    <div class="row mb-5">
        <div class="col-md-12">
            <h2 class="text-center mb-4">Simple Setup Process</h2>
            <div class="row justify-content-center">
                <div class="col-md-4 text-center">
                    <div class="card h-100 shadow-sm">
                        <div class="card-body">
                            <div class="display-1 text-primary mb-3">1</div>
                            <h3 class="h5">Click "Add to Slack"</h3>
                            <p class="card-text">Authorize the app to access your workspace</p>
                        </div>
                    </div>
                </div>
                <div class="col-md-4 text-center">
                    <div class="card h-100 shadow-sm">
                        <div class="card-body">
                            <div class="display-1 text-primary mb-3">2</div>
                            <h3 class="h5">Select Your Workspace</h3>
                            <p class="card-text">Choose which Slack workspace to install the bot</p>
                        </div>
                    </div>
                </div>
                <div class="col-md-4 text-center">
                    <div class="card h-100 shadow-sm">
                        <div class="card-body">
                            <div class="display-1 text-primary mb-3">3</div>
                            <h3 class="h5">Start Using Commands</h3>
                            <p class="card-text">The bot is ready to use immediately</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Call to Action -->
    <div class="row mb-5 text-center">
        <div class="col-md-12">
            <div class="p-5 bg-light rounded-3">
                <h2>Ready to enhance your security workflow?</h2>
                <p class="lead mb-4">Install our Slack bot today and streamline your security operations.</p>
                <a href="https://slack.com/oauth/v2/authorize?client_id={{ client_id }}&scope=commands,chat:write,im:write,channels:read,users:read&user_scope=&redirect_uri={{ redirect_uri }}" 
                   class="btn btn-primary btn-lg">
                    <i class="fab fa-slack me-2"></i> Add to Slack
                </a>
            </div>
        </div>
    </div>

    <!-- FAQ Section -->
    <div class="row mb-5">
        <div class="col-md-12">
            <h2 class="text-center mb-4">Frequently Asked Questions</h2>
            <div class="accordion" id="faqAccordion">
                <div class="accordion-item">
                    <h2 class="accordion-header" id="headingOne">
                        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
                            What permissions does the bot require?
                        </button>
                    </h2>
                    <div id="collapseOne" class="accordion-collapse collapse" aria-labelledby="headingOne" data-bs-parent="#faqAccordion">
                        <div class="accordion-body">
                            The bot requires permissions to send messages, create commands, read channels, and send direct messages. It only accesses the data it needs to function and doesn't read your team's conversations.
                        </div>
                    </div>
                </div>
                <div class="accordion-item">
                    <h2 class="accordion-header" id="headingTwo">
                        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                            Can I customize the bot for my organization?
                        </button>
                    </h2>
                    <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#faqAccordion">
                        <div class="accordion-body">
                            Yes! Once integrated, organization admins can configure custom welcome messages and notification preferences from the organization dashboard.
                        </div>
                    </div>
                </div>
                <div class="accordion-item">
                    <h2 class="accordion-header" id="headingThree">
                        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
                            Is there a cost to using the bot?
                        </button>
                    </h2>
                    <div id="collapseThree" class="accordion-collapse collapse" aria-labelledby="headingThree" data-bs-parent="#faqAccordion">
                        <div class="accordion-body">
                            The OWASP BLT Slack bot is completely free to use as part of our mission to improve security awareness and collaboration.
                        </div>
                    </div>
                </div>
                <div class="accordion-item">
                    <h2 class="accordion-header" id="headingFour">
                        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseFour" aria-expanded="false" aria-controls="collapseFour">
                            How do I uninstall the bot?
                        </button>
                    </h2>
                    <div id="collapseFour" class="accordion-collapse collapse" aria-labelledby="headingFour" data-bs-parent="#faqAccordion">
                        <div class="accordion-body">
                            You can uninstall the bot at any time from your Slack workspace settings under the "Apps" section, or contact us for assistance.
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
{% endblock %}
EOL

# Now create the view file to handle the slack page
cat > ./website/views/slack.py << 'EOL'
import os
from django.shortcuts import render
from django.conf import settings
from django.urls import reverse
from urllib.parse import quote

def slack_landing_page(request):
    """
    Render the Slack landing page with installation button and feature showcase
    """
    # Get the Slack client ID from environment variables or settings
    client_id = os.environ.get('SLACK_CLIENT_ID', settings.SLACK_CLIENT_ID if hasattr(settings, 'SLACK_CLIENT_ID') else '')
    
    # Generate the OAuth redirect URL (must match what's configured in Slack app)
    redirect_uri = request.build_absolute_uri(reverse('slack_oauth_callback'))
    redirect_uri = quote(redirect_uri, safe='')
    
    context = {
        'client_id': client_id,
        'redirect_uri': redirect_uri,
    }
    
    return render(request, 'slack/landing.html', context)
EOL

# Now update the urls.py to add the new route
echo "Attempting to add the /slack route to urls.py"
# Check if we can find where to insert the new URL pattern
grep -n "urlpatterns = \[" ./blt/urls.py
grep -n "re_path(r\"^favicon\.ico" ./blt/urls.py

echo "Showing the existing import block in urls.py..."
grep -n "^from website.views" ./blt/urls.py | head -15

Length of output: 1243


@DonnieBLT I've created a complete Slack landing page for the /slack route that showcases all the bot's features and provides an installation button. Here's what I've implemented:

  1. Landing Page Template - Created a comprehensive page with sections for:

    • Overview of the Slack bot capabilities
    • Command reference table with all available commands
    • Simple setup process explanation
    • FAQ section for common questions
    • Installation button that connects with the Slack API
  2. View Function - Created a view that handles rendering the page with proper OAuth configuration

  3. URL Configuration - For the final step, we need to update the urls.py file to add the route

Here's how to complete the implementation:

  1. First, add the import for our new view at the top of blt/urls.py along with other view imports:
from website.views.slack import slack_landing_page
  1. Then add the URL pattern to the urlpatterns list in blt/urls.py:
path("slack/", slack_landing_page, name="slack_landing_page"),
  1. Make sure your environment has SLACK_CLIENT_ID set in environment variables or settings.py for the OAuth installation button to work properly.

The page includes:

  • A detailed showcase of the bot's capabilities
  • All available Slack commands with examples
  • A simple 3-step setup process explanation
  • FAQ section addressing common questions
  • "Add to Slack" buttons with proper OAuth configuration

This implementation provides a professional landing page that highlights all the features of your Slack bot and makes it easy for organizations to install it to their workspace.

coderabbitai[bot] avatar Mar 16 '25 03:03 coderabbitai[bot]

"I will be working on this issue. Please assign it to me."

Naman8kumar avatar Jul 10 '25 14:07 Naman8kumar

You cannot be assigned to this issue because you are already assigned to the following issues without an open pull request: OWASP-BLT/Fresh#4. Please submit a pull request for these issues before getting assigned to a new one.

github-actions[bot] avatar Jul 10 '25 14:07 github-actions[bot]

Hello @krishna-dept! You've been assigned to OWASP-BLT/BLT issue #3342. You have 24 hours to complete a pull request.


This comment was generated by OWASP BLT-Action

github-actions[bot] avatar Nov 20 '25 02:11 github-actions[bot]

⏰ This issue has been automatically unassigned from krishna-dept due to 24 hours of inactivity. The issue is now available for anyone to work on again.


This comment was generated by OWASP BLT-Action

github-actions[bot] avatar Nov 21 '25 11:11 github-actions[bot]

/assign

Krishna-Mulik avatar Nov 22 '25 04:11 Krishna-Mulik

Hello @Krishna-Mulik! You've been assigned to OWASP-BLT/BLT issue #3342. You have 24 hours to complete a pull request.


This comment was generated by OWASP BLT-Action

github-actions[bot] avatar Nov 22 '25 05:11 github-actions[bot]

⏰ This issue has been automatically unassigned from Krishna-Mulik due to 24 hours of inactivity. The issue is now available for anyone to work on again.


This comment was generated by OWASP BLT-Action

github-actions[bot] avatar Nov 23 '25 05:11 github-actions[bot]