mirror of
https://github.com/kataras/iris.git
synced 2025-03-14 08:16:28 +01:00
85 lines
2.4 KiB
Go
85 lines
2.4 KiB
Go
// file: main.go
|
|
|
|
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/kataras/iris/_examples/mvc/login/datasource"
|
|
"github.com/kataras/iris/_examples/mvc/login/repositories"
|
|
"github.com/kataras/iris/_examples/mvc/login/services"
|
|
"github.com/kataras/iris/_examples/mvc/login/web/controllers"
|
|
"github.com/kataras/iris/_examples/mvc/login/web/middleware"
|
|
|
|
"github.com/kataras/iris"
|
|
"github.com/kataras/iris/mvc"
|
|
"github.com/kataras/iris/sessions"
|
|
)
|
|
|
|
func main() {
|
|
app := iris.New()
|
|
// You got full debug messages, useful when using MVC and you want to make
|
|
// sure that your code is aligned with the Iris' MVC Architecture.
|
|
app.Logger().SetLevel("debug")
|
|
|
|
// Load the template files.
|
|
tmpl := iris.HTML("./web/views", ".html").
|
|
Layout("shared/layout.html").
|
|
Reload(true)
|
|
app.RegisterView(tmpl)
|
|
|
|
app.StaticWeb("/public", "./web/public")
|
|
|
|
app.OnAnyErrorCode(func(ctx iris.Context) {
|
|
ctx.ViewData("Message", ctx.Values().
|
|
GetStringDefault("message", "The page you're looking for doesn't exist"))
|
|
ctx.View("shared/error.html")
|
|
})
|
|
|
|
// ---- Register our controllers. ----
|
|
|
|
// Prepare our repositories and services.
|
|
db, err := datasource.LoadUsers(datasource.Memory)
|
|
if err != nil {
|
|
app.Logger().Fatalf("error while loading the users: %v", err)
|
|
return
|
|
}
|
|
repo := repositories.NewUserRepository(db)
|
|
userService := services.NewUserService(repo)
|
|
|
|
// "/users" based mvc application.
|
|
users := mvc.New(app.Party("/users"))
|
|
// Add the basic authentication(admin:password) middleware
|
|
// for the /users based requests.
|
|
users.Router.Use(middleware.BasicAuth)
|
|
// Bind the "userService" to the UserController's Service (interface) field.
|
|
users.AddDependencies(userService)
|
|
users.Register(new(controllers.UsersController))
|
|
|
|
// "/user" based mvc application.
|
|
sessManager := sessions.New(sessions.Config{
|
|
Cookie: "sessioncookiename",
|
|
Expires: 24 * time.Hour,
|
|
})
|
|
user := mvc.New(app.Party("/user"))
|
|
user.AddDependencies(
|
|
userService,
|
|
sessManager.Start,
|
|
)
|
|
user.Register(new(controllers.UserController))
|
|
|
|
// http://localhost:8080/noexist
|
|
// and all controller's methods like
|
|
// http://localhost:8080/users/1
|
|
app.Run(
|
|
// Starts the web server at localhost:8080
|
|
iris.Addr("localhost:8080"),
|
|
// Disables the updater.
|
|
iris.WithoutVersionChecker,
|
|
// Ignores err server closed log when CTRL/CMD+C pressed.
|
|
iris.WithoutServerError(iris.ErrServerClosed),
|
|
// Enables faster json serialization and more.
|
|
iris.WithOptimizations,
|
|
)
|
|
}
|