GithubHelp home page GithubHelp logo

Comments (2)

sansyrox avatar sansyrox commented on May 29, 2024

That's a great suggestion @fina-joy 😄 I am not certain about the syntax tho.

How will you add an Auth handler here?

from robyn.

fina-joy avatar fina-joy commented on May 29, 2024

To implement authentication capabilities for sub-routers in the Robyn web framework, you'll want to extend the existing authentication framework to be usable at the sub-router level. The goal is to enable different authentication strategies for different sub-routers, enhancing the flexibility and security of the application.

Here's a step-by-step guide to modifying the SubRouter class and the main Robyn class to achieve this:

1. Modify the SubRouter Constructor

First, update the SubRouter class to accept an authentication handler or flag. This allows you to specify if and how each sub-router should handle authentication.

class SubRouter(Robyn):
    def __init__(self, file_object: str, prefix: str = "", config: Config = Config(), authentication_handler: Optional[AuthenticationHandler] = None) -> None:
        super().__init__(file_object, config)
        self.prefix = prefix
        self.authentication_handler = authentication_handler

2. Update Route Methods in SubRouter

Next, modify the route methods in SubRouter to consider the authentication_handler. You'll need to adjust methods like get, post, put, etc., to check if self.authentication_handler is set and apply it to the routes.

def get(self, endpoint: str, const: bool = False):
    if self.authentication_handler:
        # Add logic to apply authentication handler to the route
    return super().get(self.__add_prefix(endpoint), const)

3. Enhance add_route in Robyn Class

In the Robyn class, enhance the add_route method to handle the authentication for routes. You can do this by checking if auth_required is True and applying the appropriate authentication logic.

def add_route(self, route_type: Union[HttpMethod, str], endpoint: str, handler: Callable, is_const: bool = False, auth_required: bool = False):
    # Existing code...

    if auth_required and self.authentication_handler:
        # Apply the authentication handler to the route

4. Consider Global vs. Local Authentication Strategies

Decide how global and local (specific to sub-routers) authentication strategies will interact. For instance, if a global authentication strategy is set, should it override local strategies, or should local strategies have priority?

from robyn.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.