package main import ( "larago/app/Http/Controllers" "larago/app/Http/Middleware" "larago/config" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ///sessions_redis //"github.com/gin-contrib/sessions/redis" //end_sessions_redis //sessions_cookie //end_sessions_cookie //Memcached //"github.com/bradfitz/gomemcache/memcache" //"github.com/gin-contrib/sessions/memcached" //end_Memcached ) func main() { //database_SQL config.Init() //end_database_SQL //APP_KEYS := config.EnvFunc("APP_KEYS") //gin //switch to "release" mode in production //gin.SetMode(gin.ReleaseMode) r := gin.Default() r.Use(cors.New(cors.Config{ AllowOrigins: []string{"http://127.0.0.1", "http://127.0.0.1:5173"}, AllowMethods: []string{"PUT", "GET", "POST", "PATCH", "OPTIONS"}, AllowHeaders: []string{"Accept-Language", "Authorization", "Content-Language", "X-CSRF-Token", "X-XSRF-Token", "Origin", "X-Requested-With", "Content-Type", "Accept", "Access-Control-Allow-Origin"}, ExposeHeaders: []string{"Content-Length"}, AllowCredentials: true, })) //Trusted_proxies //r.SetTrustedProxies([]string{"192.168.1.2"}) //end_Trusted_proxies //sessions //sessions_cookie //store := cookie.NewStore([]byte(APP_KEYS)) //end_sessions_cookie //redis_sessions //REDIS_HOST := config.EnvFunc("REDIS_HOST") //REDIS_PASSWORD := config.EnvFunc("REDIS_PASSWORD") //REDIS_PORT := config.EnvFunc("REDIS_PORT") //REDIS_SECRET := config.EnvFunc("REDIS_SECRET") //store, err := redis.NewStore(10, "tcp", REDIS_HOST+":"+REDIS_PORT, REDIS_PASSWORD, []byte(REDIS_SECRET)) //if err != nil { // panic("Failed to connect to redis_sessions!") // } //redis_sessions //Memcached //store := memcached.NewStore(memcache.New("localhost:11211"), "", []byte("APP_KEYS")) //end_Memcached //sessions_use //r.Use(sessions.Sessions(config.EnvFunc("SESSION_NAME"), store)) //end_sessions //gin_html_and_static r.Static("/public", "./public") r.MaxMultipartMemory = 8 << 20 //gin_route_middleware welcome := r.Group("/") Controllers.Welcome(welcome.Group("/")) auth := r.Group("/auth") Controllers.Auth(auth.Group("/")) res_pass := r.Group("/login") Controllers.Res_pass(res_pass.Group("/")) //JWT_Middleware r.Use(Middleware.ValidateToken()) //end_JWT_Middleware home := r.Group("/home") Controllers.Home(home.Group("/")) pacient := r.Group("/pacient") Controllers.Pacient(pacient.Group("/")) //Casbin_Role_Middleware //r.Use(Middleware.JWTAuthCasbinMiddleware(true)) //end_Casbin_Role_Middleware doctor := r.Group("/doctor") Controllers.Doctor(doctor.Group("/")) users := r.Group("/users") Controllers.UsersRegister(users.Group("/")) role := r.Group("/role") Controllers.CasbinRole(role.Group("/")) //end_gin_route_middleware //test //test := r.Group("/api/ping") //test.Use(Middleware.AuthMiddleware(true)) //test.GET("/", func(c *gin.Context) { // c.JSON(200, gin.H{ // "message": "pong", // }) //}) //end_test PORT := config.EnvFunc("PORT") r.Run(PORT) // listen and serve on 0.0.0.0:8080 }