Thanks Jonathan & Kenneth,

 have successfully implemented the subdomain module based on your
feedback ( using request.env.http_host ) and setting it globally
( 0.py ) using the following function:

def get_subdomain():
    """
        Extracts subdomain from the url
    """
    try:
        subdomain = request.env.http_host.split('.')[:-2].pop()
        if subdomain == 'www':
            return ''
        return subdomain
    except IndexError:
        return ''
DOMAIN = 'mydomain.com'
SUBDOMAIN = get_subdomain()

Now I have to redirect to the user1.mydomain.com after user1 has
logged in .. which works but only if _next variable is not set.

in db.py I have set auth.settings.login_next =
URL(r=request,c='default',f='set_domain') where the set_domain method
goes like this..

def set_domain():
    if auth.user and request.get_vars._next:
        redirect('http://'+auth.user.username+'.'+DOMAIN
+request.get_vars._next)
    elif auth.user:
        redirect('http://'+auth.user.username+'.'+DOMAIN)
    else:
        redirect(URL(f='index'))

This works only if the _next variable is not set

If _next is set with some value ( eg: _next='myapp/default/show_id' :
show_id has @auth.login_required ) .. set_domain method will not get
called and it just redirects to the value set in _next variable in
which case I will not be able the redirect to username.mydomain.com.


How can I work this out.. or is their any better approach to achieve
this?

.. Thanks in advance!


On Feb 2, 10:28 am, Jonathan Lundell <jlund...@pobox.com> wrote:
> On Feb 1, 2011, at 9:23 PM, Kenneth Lundström wrote:
>
>
>
> > >> Also user1 must be able to point user1.mydomain.com to his own domain ( 
> > >> custom domain feature) for the application interface. How can I achieve 
> > >> this?
>
> >> I'm not sure what you mean by that.
>
> > I understod it like that a user should have the ability to in settings add 
> > a custom domain (myowndomain.net) to point to user1.mydomain.com. Of course 
> > the users takes care of DNS and things like that but how to get web2py to 
> > understand that users own domain even should be used.
>
> By the time web2py sees it, request.env.http_host will be either 
> myowndomain.net or user1.mydomain.net, depending on how the external 
> redirection goes. Assuming all this is going to the same application, the 
> easiest thing to do would be to look at http_host in a model file (before the 
> controller gets it) and maybe stash it somewhere else, like 
> request.env.user_domain or the like, for the controller to use.
>
> It could be tacked on to request.vars, too, but I don't think there's any 
> great point in doing that.
>
> This all depends on what you want to *do* with the domain name information, 
> of course.

Reply via email to