-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.go
66 lines (54 loc) · 1.4 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package main
import (
Config "goServe/config"
"time"
"github.com/gin-gonic/gin"
"github.com/itsjamie/gin-cors"
"goServe/controller"
"goServe/auth"
Mongo "goServe/mongodb"
Email "goServe/email"
)
func init() {
Config.GetConfig()
Email.ConfigEmail()
Mongo.Connect()
}
func main() {
r := gin.New()
/*
middleware
*/
r.Use(gin.Logger())
r.Use(cors.Middleware(cors.Config{
Origins: "*",
Methods: "GET, PUT, POST, DELETE",
RequestHeaders: "Origin, Authorization, Content-Type",
ExposedHeaders: "",
MaxAge: 50 * time.Second,
Credentials: true,
ValidateHeaders: false,
}))
r.Use(Mongo.DBConnectMW)
r.Use(Mongo.DBErrorMW)
/*
api for authentication functionalities
*/
r.POST("/login", auth.LoginUserWithEmail)
r.POST("/signup/email", auth.SignUpWithEmail)
r.POST("/signup/email/verify-email", auth.ActivateAccountAfterEmailSignup)
facebookR := r.Group("facebook")
auth.ConfigFacebook(facebookR, Config.GetFacebookClientId(), Config.GetFacebookClientSecret(), "http://localhost:8080/facebook/callback")
/*
api requiring authentication
*/
private := r.Group("/api/private")
private.Use(auth.TokenAuthMiddleware)
private.GET("/example", controller.TestJsonController)
/*
api not requiring authentication
*/
public := r.Group("/api/public")
public.GET("/example", controller.TestController)
r.Run(":8080") // listen and serve on 0.0.0.0:8080
}