2021-06-09 07:33:54 +08:00
// Copyright 2014 The Gogs Authors. All rights reserved.
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package web
import (
"net/http"
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/web/middleware"
2022-01-02 21:12:35 +08:00
"code.gitea.io/gitea/routers/web/auth"
2021-06-09 07:33:54 +08:00
"code.gitea.io/gitea/routers/web/user"
)
const (
// tplHome home page template
tplHome base . TplName = "home"
)
// Home render home page
func Home ( ctx * context . Context ) {
if ctx . IsSigned {
2022-03-22 08:03:22 +01:00
if ! ctx . Doer . IsActive && setting . Service . RegisterEmailConfirm {
2021-06-09 07:33:54 +08:00
ctx . Data [ "Title" ] = ctx . Tr ( "auth.active_your_account" )
2022-01-02 21:12:35 +08:00
ctx . HTML ( http . StatusOK , auth . TplActivate )
2022-03-22 08:03:22 +01:00
} else if ! ctx . Doer . IsActive || ctx . Doer . ProhibitLogin {
log . Info ( "Failed authentication attempt for %s from %s" , ctx . Doer . Name , ctx . RemoteAddr ( ) )
2021-06-09 07:33:54 +08:00
ctx . Data [ "Title" ] = ctx . Tr ( "auth.prohibit_login" )
ctx . HTML ( http . StatusOK , "user/auth/prohibit_login" )
2022-03-22 08:03:22 +01:00
} else if ctx . Doer . MustChangePassword {
2021-06-09 07:33:54 +08:00
ctx . Data [ "Title" ] = ctx . Tr ( "auth.must_change_password" )
ctx . Data [ "ChangePasscodeLink" ] = setting . AppSubURL + "/user/change_password"
middleware . SetRedirectToCookie ( ctx . Resp , setting . AppSubURL + ctx . Req . URL . RequestURI ( ) )
ctx . Redirect ( setting . AppSubURL + "/user/settings/change_password" )
} else {
user . Dashboard ( ctx )
}
return
// Check non-logged users landing page.
} else if setting . LandingPageURL != setting . LandingPageHome {
ctx . Redirect ( setting . AppSubURL + string ( setting . LandingPageURL ) )
return
}
// Check auto-login.
uname := ctx . GetCookie ( setting . CookieUserName )
if len ( uname ) != 0 {
ctx . Redirect ( setting . AppSubURL + "/user/login" )
return
}
ctx . Data [ "PageIsHome" ] = true
ctx . Data [ "IsRepoIndexerEnabled" ] = setting . Indexer . RepoIndexerEnabled
ctx . HTML ( http . StatusOK , tplHome )
}
// NotFound render 404 page
func NotFound ( ctx * context . Context ) {
ctx . Data [ "Title" ] = "Page Not Found"
ctx . NotFound ( "home.NotFound" , nil )
}