Moving files and adding auth
This commit is contained in:
parent
728ac72dff
commit
1c16b54802
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# main binary
|
||||||
|
multitenantStack
|
||||||
|
|
||||||
|
# IDEs
|
||||||
|
.vscode
|
||||||
|
|
||||||
|
# Go vendoring
|
||||||
|
vendor/*
|
@ -1,6 +1,6 @@
|
|||||||
# MutlitenantStack
|
# MutlitenantStack
|
||||||
|
|
||||||
This is a project to demonstrate multi tenancy usage in beego using postgres and seperated databases
|
This is a project to demonstrate multi tenancy usage in beego using postgres and separated databases
|
||||||
|
|
||||||
The api was scaffolded using:
|
The api was scaffolded using:
|
||||||
|
|
||||||
@ -9,3 +9,8 @@ The api was scaffolded using:
|
|||||||
then `bee run -downdoc=true``
|
then `bee run -downdoc=true``
|
||||||
|
|
||||||
To regenerate docs simply run `bee generate docs`
|
To regenerate docs simply run `bee generate docs`
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
- company controller, create databases and so on
|
||||||
|
- Update not found to json
|
||||||
|
15
bee.json
Normal file
15
bee.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"go_install": false,
|
||||||
|
"scripts": {
|
||||||
|
"test": "go test -v tests/*.go",
|
||||||
|
"convey": "goconvey tests/"
|
||||||
|
},
|
||||||
|
"cmd_args": [],
|
||||||
|
"envs": [],
|
||||||
|
"database": {
|
||||||
|
"driver": "postgres",
|
||||||
|
"conn": "postgres://postgres:postgre@127.0.0.1:5435/system?sslmode=disable"
|
||||||
|
},
|
||||||
|
"enable_reload": true
|
||||||
|
}
|
127
controllers/auth.go
Normal file
127
controllers/auth.go
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
auth "multitenantStack/services/authentication"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
jwt "github.com/dgrijalva/jwt-go"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AuthController operations for Auth
|
||||||
|
type AuthController struct {
|
||||||
|
BaseController
|
||||||
|
}
|
||||||
|
|
||||||
|
// URLMapping ...
|
||||||
|
func (c *AuthController) URLMapping() {
|
||||||
|
// This block is used to drastically speed up the annotation -> lookup process
|
||||||
|
c.Mapping("Login", c.Login)
|
||||||
|
c.Mapping("GetOne", c.GetOne)
|
||||||
|
c.Mapping("GetAll", c.GetAll)
|
||||||
|
c.Mapping("Put", c.Put)
|
||||||
|
c.Mapping("Delete", c.Delete)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Login Get a JWT token for the user
|
||||||
|
// @Title Create
|
||||||
|
// @Description create Auth
|
||||||
|
// @Param body body models.Auth true "body for Auth content"
|
||||||
|
// @Success 201 {object} models.Auth
|
||||||
|
// @Failure 403 body is empty
|
||||||
|
// @router /login [post]
|
||||||
|
func (c *AuthController) Login() {
|
||||||
|
|
||||||
|
type AuthResponse struct {
|
||||||
|
Status int
|
||||||
|
Jwt string
|
||||||
|
}
|
||||||
|
|
||||||
|
if c.Ctx.Input.Method() != "POST" {
|
||||||
|
c.ServeJsonError("Method not allowed")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: did the user send us a token? then just validate and tell him he is logged in
|
||||||
|
|
||||||
|
email := c.GetString("email")
|
||||||
|
password := c.GetString("password")
|
||||||
|
|
||||||
|
//TODO: check against main database, get company id and veryfy password
|
||||||
|
companyName := ""
|
||||||
|
companyUserId := 5
|
||||||
|
//TODO: if found query the company database to get roleid, and name
|
||||||
|
|
||||||
|
name := "Lukas"
|
||||||
|
roleId := 5
|
||||||
|
|
||||||
|
tokenString := ""
|
||||||
|
if email == "admin@admin.at" && password == "my password" {
|
||||||
|
// The jwtClaims are our trusted clientside session
|
||||||
|
tokenString = auth.CreateToken(jwt.MapClaims{
|
||||||
|
"email": email,
|
||||||
|
"companyName": companyName,
|
||||||
|
"companyUserId": companyUserId,
|
||||||
|
"name": name,
|
||||||
|
"roleId": roleId,
|
||||||
|
"expires": time.Now().Unix() + 3600,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
c.ServeJsonError("Invalid user/password")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
json := AuthResponse{200, tokenString}
|
||||||
|
c.Data["json"] = &json
|
||||||
|
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOne ...
|
||||||
|
// @Title GetOne
|
||||||
|
// @Description get Auth by id
|
||||||
|
// @Param id path string true "The key for staticblock"
|
||||||
|
// @Success 200 {object} models.Auth
|
||||||
|
// @Failure 403 :id is empty
|
||||||
|
// @router /:id [get]
|
||||||
|
func (c *AuthController) GetOne() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAll ...
|
||||||
|
// @Title GetAll
|
||||||
|
// @Description get Auth
|
||||||
|
// @Param query query string false "Filter. e.g. col1:v1,col2:v2 ..."
|
||||||
|
// @Param fields query string false "Fields returned. e.g. col1,col2 ..."
|
||||||
|
// @Param sortby query string false "Sorted-by fields. e.g. col1,col2 ..."
|
||||||
|
// @Param order query string false "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ..."
|
||||||
|
// @Param limit query string false "Limit the size of result set. Must be an integer"
|
||||||
|
// @Param offset query string false "Start position of result set. Must be an integer"
|
||||||
|
// @Success 200 {object} models.Auth
|
||||||
|
// @Failure 403
|
||||||
|
// @router / [get]
|
||||||
|
func (c *AuthController) GetAll() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put ...
|
||||||
|
// @Title Put
|
||||||
|
// @Description update the Auth
|
||||||
|
// @Param id path string true "The id you want to update"
|
||||||
|
// @Param body body models.Auth true "body for Auth content"
|
||||||
|
// @Success 200 {object} models.Auth
|
||||||
|
// @Failure 403 :id is not int
|
||||||
|
// @router /:id [put]
|
||||||
|
func (c *AuthController) Put() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete ...
|
||||||
|
// @Title Delete
|
||||||
|
// @Description delete the Auth
|
||||||
|
// @Param id path string true "The id you want to delete"
|
||||||
|
// @Success 200 {string} delete success!
|
||||||
|
// @Failure 403 id is empty
|
||||||
|
// @router /:id [delete]
|
||||||
|
func (c *AuthController) Delete() {
|
||||||
|
|
||||||
|
}
|
30
controllers/base.go
Normal file
30
controllers/base.go
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
type JsonBasicResponse struct {
|
||||||
|
Status int
|
||||||
|
Message string
|
||||||
|
}
|
||||||
|
|
||||||
|
const JSON_ERROR int = 500
|
||||||
|
const JSON_SUCCESS int = 200
|
||||||
|
|
||||||
|
// BaseController operations for BaseController
|
||||||
|
type BaseController struct {
|
||||||
|
beego.Controller
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *BaseController) ServeJsonError(message string) {
|
||||||
|
json := JsonBasicResponse{JSON_ERROR, message}
|
||||||
|
this.Data["json"] = &json
|
||||||
|
this.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *BaseController) ServeJsonSuccess(message string) {
|
||||||
|
json := JsonBasicResponse{JSON_SUCCESS, message}
|
||||||
|
this.Data["json"] = &json
|
||||||
|
this.ServeJSON()
|
||||||
|
}
|
36
controllers/baseAPI.go
Normal file
36
controllers/baseAPI.go
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
//"fmt"
|
||||||
|
"github.com/juusechec/jwt-beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BaseController operations for APIs
|
||||||
|
type BaseAPIController struct {
|
||||||
|
BaseController
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *BaseAPIController) Prepare() {
|
||||||
|
if this.Ctx.Input.Method() != "POST" {
|
||||||
|
this.ServeJsonError("Method not allowed")
|
||||||
|
}
|
||||||
|
|
||||||
|
//Lo que quieras hacer en todos los controladores
|
||||||
|
// O puede ser leído de una cabecera HEADER!!
|
||||||
|
tokenString := this.Ctx.Request.Header.Get("X-JWTtoken")
|
||||||
|
et := jwtbeego.EasyToken{}
|
||||||
|
valid, issuer, _ := et.ValidateToken(tokenString)
|
||||||
|
if !valid {
|
||||||
|
this.Ctx.Output.SetStatus(401)
|
||||||
|
this.ServeJsonError("Invalid Token")
|
||||||
|
}
|
||||||
|
|
||||||
|
userSession := this.GetSession("username")
|
||||||
|
|
||||||
|
if userSession == nil || userSession != issuer {
|
||||||
|
this.Ctx.Output.SetStatus(401)
|
||||||
|
this.ServeJsonError("Invalid Session")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
1
lastupdate.tmp
Executable file
1
lastupdate.tmp
Executable file
@ -0,0 +1 @@
|
|||||||
|
{"/Users/LB/go/src/multitenantStack/controllers":1541579833440000000}
|
210
routers/commentsRouter_controllers.go
Normal file
210
routers/commentsRouter_controllers.go
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
package routers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
"github.com/astaxie/beego/context/param"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:AuthController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:AuthController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetAll",
|
||||||
|
Router: `/`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:AuthController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:AuthController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetOne",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:AuthController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:AuthController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Put",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"put"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:AuthController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:AuthController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Delete",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"delete"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:AuthController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:AuthController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Login",
|
||||||
|
Router: `/login`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:CompanyDataController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:CompanyDataController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Post",
|
||||||
|
Router: `/`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:CompanyDataController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:CompanyDataController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetAll",
|
||||||
|
Router: `/`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:CompanyDataController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:CompanyDataController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetOne",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:CompanyDataController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:CompanyDataController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Put",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"put"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:CompanyDataController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:CompanyDataController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Delete",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"delete"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:CompanyUserController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:CompanyUserController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Post",
|
||||||
|
Router: `/`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:CompanyUserController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:CompanyUserController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetAll",
|
||||||
|
Router: `/`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:CompanyUserController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:CompanyUserController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetOne",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:CompanyUserController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:CompanyUserController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Put",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"put"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:CompanyUserController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:CompanyUserController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Delete",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"delete"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:ContactController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:ContactController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Post",
|
||||||
|
Router: `/`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:ContactController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:ContactController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetAll",
|
||||||
|
Router: `/`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:ContactController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:ContactController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetOne",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:ContactController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:ContactController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Put",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"put"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:ContactController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:ContactController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Delete",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"delete"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:PostController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:PostController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Post",
|
||||||
|
Router: `/`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:PostController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:PostController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetAll",
|
||||||
|
Router: `/`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:PostController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:PostController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "GetOne",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"get"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:PostController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:PostController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Put",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"put"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["multitenantStack/controllers:PostController"] = append(beego.GlobalControllerRouter["multitenantStack/controllers:PostController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "Delete",
|
||||||
|
Router: `/:id`,
|
||||||
|
AllowHTTPMethods: []string{"delete"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
|
}
|
@ -22,7 +22,7 @@ func init() {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
beego.NSNamespace("/company_data",
|
beego.NSNamespace("/companydata",
|
||||||
beego.NSInclude(
|
beego.NSInclude(
|
||||||
&controllers.CompanyDataController{},
|
&controllers.CompanyDataController{},
|
||||||
),
|
),
|
||||||
@ -34,11 +34,17 @@ func init() {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
beego.NSNamespace("/company_user",
|
beego.NSNamespace("/user",
|
||||||
beego.NSInclude(
|
beego.NSInclude(
|
||||||
&controllers.CompanyUserController{},
|
&controllers.CompanyUserController{},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
beego.NSNamespace("/auth",
|
||||||
|
beego.NSInclude(
|
||||||
|
&controllers.AuthController{},
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
beego.AddNamespace(ns)
|
beego.AddNamespace(ns)
|
||||||
}
|
}
|
||||||
|
56
services/authentication/authentication.go
Normal file
56
services/authentication/authentication.go
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
package services
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/rand"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
jwt "github.com/dgrijalva/jwt-go"
|
||||||
|
)
|
||||||
|
|
||||||
|
var hmacSecret []byte
|
||||||
|
|
||||||
|
func GenerateSecret() []byte {
|
||||||
|
b := make([]byte, 32)
|
||||||
|
rand.Read(b)
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
func InitAuthService() {
|
||||||
|
hmacSecret = GenerateSecret()
|
||||||
|
// TODO: This needs to be replaced with reading rsa keys, there needs to be a automatic generation of these if they do not exist
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func Validate(Token string) (bool, jwt.Token) {
|
||||||
|
token, err := jwt.Parse(Token, func(token *jwt.Token) (interface{}, error) {
|
||||||
|
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
|
||||||
|
return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
|
||||||
|
}
|
||||||
|
|
||||||
|
return hmacSecret, nil
|
||||||
|
})
|
||||||
|
|
||||||
|
if err == nil && token.Valid {
|
||||||
|
fmt.Println("Token is valid")
|
||||||
|
return true, *token
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Token Validation failed")
|
||||||
|
return false, *token
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateToken(Claims jwt.MapClaims) string {
|
||||||
|
|
||||||
|
// Create a new token object, specifying signing method and the claims
|
||||||
|
// you would like it to contain.
|
||||||
|
|
||||||
|
token := jwt.NewWithClaims(jwt.SigningMethodHS256, Claims)
|
||||||
|
|
||||||
|
// Sign and get the complete encoded token as a string using the secret
|
||||||
|
tokenString, err := token.SignedString(hmacSecret)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
return tokenString
|
||||||
|
}
|
64
services/companydb/companydb.go
Normal file
64
services/companydb/companydb.go
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
package services
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego/orm"
|
||||||
|
)
|
||||||
|
|
||||||
|
var dbs map[string]*sql.DB
|
||||||
|
|
||||||
|
// InitCompanyService Init companydb service and open system db connection
|
||||||
|
func InitCompanyService() {
|
||||||
|
fmt.Println("Hello from init") // test if init gets called from each orm
|
||||||
|
dbs := make(map[string]*sql.DB)
|
||||||
|
|
||||||
|
orm.RegisterDataBase("default", "postgres", "host=127.0.0.1 port=5435 user=postgres password=postgre sslmode=disable")
|
||||||
|
|
||||||
|
systemDB, err := sql.Open("postgres", "host=127.0.0.1 port=5435 user=postgres password=postgre dbname=company5 sslmode=disable")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Fatal: could not connect to db, exiting... Error:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
dbs["system"] = systemDB
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDatabase Get orm and user information
|
||||||
|
func GetDatabase(token string) {
|
||||||
|
// validate token
|
||||||
|
// retrieve correct user/database
|
||||||
|
// check if open first
|
||||||
|
// try to open second
|
||||||
|
// return error otherwise
|
||||||
|
// return db with orm or error
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateDatabase Create a database by copying the template
|
||||||
|
func CreateDatabase(token string) {
|
||||||
|
/*
|
||||||
|
db, err = sql.Open("postgres", "host=127.0.0.1 port=5435 user=postgres password=postgre dbname=company5 sslmode=disable")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
or, err := orm.NewOrmWithDB("postgres", "temp", db)
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteDatabase Delete an entire database, this is very very dangerous :-)
|
||||||
|
func DeleteDatabase(token string) {
|
||||||
|
/*
|
||||||
|
db.Close()
|
||||||
|
fmt.Println("Closed company5")
|
||||||
|
//}
|
||||||
|
|
||||||
|
res, err := o.Raw("DROP DATABASE company5;").Exec()
|
||||||
|
if err == nil {
|
||||||
|
num, _ := res.RowsAffected()
|
||||||
|
fmt.Println("mysql row affected number: ", num)
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
@ -15,10 +15,188 @@
|
|||||||
},
|
},
|
||||||
"basePath": "/v1",
|
"basePath": "/v1",
|
||||||
"paths": {
|
"paths": {
|
||||||
"/company_data/": {
|
"/auth/": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"company_data"
|
"auth"
|
||||||
|
],
|
||||||
|
"description": "get Auth",
|
||||||
|
"operationId": "AuthController.GetAll",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "query",
|
||||||
|
"description": "Filter. e.g. col1:v1,col2:v2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "fields",
|
||||||
|
"description": "Fields returned. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "sortby",
|
||||||
|
"description": "Sorted-by fields. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "order",
|
||||||
|
"description": "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "limit",
|
||||||
|
"description": "Limit the size of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "offset",
|
||||||
|
"description": "Start position of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/.Auth"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/auth/login": {
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"description": "create Auth",
|
||||||
|
"operationId": "AuthController.Create",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for Auth content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/.Auth"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/.Auth"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "body is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/auth/{id}": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"description": "get Auth by id",
|
||||||
|
"operationId": "AuthController.GetOne",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The key for staticblock",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/.Auth"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"tags": [
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"description": "update the Auth",
|
||||||
|
"operationId": "AuthController.Put",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to update",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for Auth content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/.Auth"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/.Auth"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is not int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"tags": [
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"description": "delete the Auth",
|
||||||
|
"operationId": "AuthController.Delete",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to delete",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{string} delete success!"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/companydata/": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"companydata"
|
||||||
],
|
],
|
||||||
"description": "get CompanyData",
|
"description": "get CompanyData",
|
||||||
"operationId": "CompanyDataController.Get All",
|
"operationId": "CompanyDataController.Get All",
|
||||||
@ -74,7 +252,7 @@
|
|||||||
},
|
},
|
||||||
"post": {
|
"post": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"company_data"
|
"companydata"
|
||||||
],
|
],
|
||||||
"description": "create CompanyData",
|
"description": "create CompanyData",
|
||||||
"operationId": "CompanyDataController.Post",
|
"operationId": "CompanyDataController.Post",
|
||||||
@ -99,10 +277,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/company_data/{id}": {
|
"/companydata/{id}": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"company_data"
|
"companydata"
|
||||||
],
|
],
|
||||||
"description": "get CompanyData by id",
|
"description": "get CompanyData by id",
|
||||||
"operationId": "CompanyDataController.Get One",
|
"operationId": "CompanyDataController.Get One",
|
||||||
@ -129,7 +307,7 @@
|
|||||||
},
|
},
|
||||||
"put": {
|
"put": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"company_data"
|
"companydata"
|
||||||
],
|
],
|
||||||
"description": "update the CompanyData",
|
"description": "update the CompanyData",
|
||||||
"operationId": "CompanyDataController.Put",
|
"operationId": "CompanyDataController.Put",
|
||||||
@ -165,7 +343,7 @@
|
|||||||
},
|
},
|
||||||
"delete": {
|
"delete": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"company_data"
|
"companydata"
|
||||||
],
|
],
|
||||||
"description": "delete the CompanyData",
|
"description": "delete the CompanyData",
|
||||||
"operationId": "CompanyDataController.Delete",
|
"operationId": "CompanyDataController.Delete",
|
||||||
@ -188,179 +366,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/company_user/": {
|
|
||||||
"get": {
|
|
||||||
"tags": [
|
|
||||||
"company_user"
|
|
||||||
],
|
|
||||||
"description": "get CompanyUser",
|
|
||||||
"operationId": "CompanyUserController.Get All",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"in": "query",
|
|
||||||
"name": "query",
|
|
||||||
"description": "Filter. e.g. col1:v1,col2:v2 ...",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"in": "query",
|
|
||||||
"name": "fields",
|
|
||||||
"description": "Fields returned. e.g. col1,col2 ...",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"in": "query",
|
|
||||||
"name": "sortby",
|
|
||||||
"description": "Sorted-by fields. e.g. col1,col2 ...",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"in": "query",
|
|
||||||
"name": "order",
|
|
||||||
"description": "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ...",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"in": "query",
|
|
||||||
"name": "limit",
|
|
||||||
"description": "Limit the size of result set. Must be an integer",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"in": "query",
|
|
||||||
"name": "offset",
|
|
||||||
"description": "Start position of result set. Must be an integer",
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/models.CompanyUser"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"403": {
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"post": {
|
|
||||||
"tags": [
|
|
||||||
"company_user"
|
|
||||||
],
|
|
||||||
"description": "create CompanyUser",
|
|
||||||
"operationId": "CompanyUserController.Post",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"in": "body",
|
|
||||||
"name": "body",
|
|
||||||
"description": "body for CompanyUser content",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/models.CompanyUser"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"201": {
|
|
||||||
"description": "{int} models.CompanyUser"
|
|
||||||
},
|
|
||||||
"403": {
|
|
||||||
"description": "body is empty"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/company_user/{id}": {
|
|
||||||
"get": {
|
|
||||||
"tags": [
|
|
||||||
"company_user"
|
|
||||||
],
|
|
||||||
"description": "get CompanyUser by id",
|
|
||||||
"operationId": "CompanyUserController.Get One",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"in": "path",
|
|
||||||
"name": "id",
|
|
||||||
"description": "The key for staticblock",
|
|
||||||
"required": true,
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/models.CompanyUser"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"403": {
|
|
||||||
"description": ":id is empty"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"put": {
|
|
||||||
"tags": [
|
|
||||||
"company_user"
|
|
||||||
],
|
|
||||||
"description": "update the CompanyUser",
|
|
||||||
"operationId": "CompanyUserController.Put",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"in": "path",
|
|
||||||
"name": "id",
|
|
||||||
"description": "The id you want to update",
|
|
||||||
"required": true,
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"in": "body",
|
|
||||||
"name": "body",
|
|
||||||
"description": "body for CompanyUser content",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/models.CompanyUser"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/models.CompanyUser"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"403": {
|
|
||||||
"description": ":id is not int"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"delete": {
|
|
||||||
"tags": [
|
|
||||||
"company_user"
|
|
||||||
],
|
|
||||||
"description": "delete the CompanyUser",
|
|
||||||
"operationId": "CompanyUserController.Delete",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"in": "path",
|
|
||||||
"name": "id",
|
|
||||||
"description": "The id you want to delete",
|
|
||||||
"required": true,
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "{string} delete success!"
|
|
||||||
},
|
|
||||||
"403": {
|
|
||||||
"description": "id is empty"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/contact/": {
|
"/contact/": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
@ -706,9 +711,185 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"/user/": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"user"
|
||||||
|
],
|
||||||
|
"description": "get CompanyUser",
|
||||||
|
"operationId": "CompanyUserController.Get All",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "query",
|
||||||
|
"description": "Filter. e.g. col1:v1,col2:v2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "fields",
|
||||||
|
"description": "Fields returned. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "sortby",
|
||||||
|
"description": "Sorted-by fields. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "order",
|
||||||
|
"description": "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "limit",
|
||||||
|
"description": "Limit the size of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "offset",
|
||||||
|
"description": "Start position of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyUser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"user"
|
||||||
|
],
|
||||||
|
"description": "create CompanyUser",
|
||||||
|
"operationId": "CompanyUserController.Post",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for CompanyUser content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyUser"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "{int} models.CompanyUser"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "body is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/user/{id}": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"user"
|
||||||
|
],
|
||||||
|
"description": "get CompanyUser by id",
|
||||||
|
"operationId": "CompanyUserController.Get One",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The key for staticblock",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyUser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"tags": [
|
||||||
|
"user"
|
||||||
|
],
|
||||||
|
"description": "update the CompanyUser",
|
||||||
|
"operationId": "CompanyUserController.Put",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to update",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for CompanyUser content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyUser"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyUser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is not int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"tags": [
|
||||||
|
"user"
|
||||||
|
],
|
||||||
|
"description": "delete the CompanyUser",
|
||||||
|
"operationId": "CompanyUserController.Delete",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to delete",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{string} delete success!"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"definitions": {
|
"definitions": {
|
||||||
|
".Auth": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
"models.CompanyData": {
|
"models.CompanyData": {
|
||||||
"title": "CompanyData",
|
"title": "CompanyData",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
@ -835,7 +1016,7 @@
|
|||||||
"description": "ContactController operations for Contact\n"
|
"description": "ContactController operations for Contact\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "company_data",
|
"name": "companydata",
|
||||||
"description": "CompanyDataController operations for CompanyData\n"
|
"description": "CompanyDataController operations for CompanyData\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -843,8 +1024,12 @@
|
|||||||
"description": "PostController operations for Post\n"
|
"description": "PostController operations for Post\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "company_user",
|
"name": "user",
|
||||||
"description": "CompanyUserController operations for CompanyUser\n"
|
"description": "CompanyUserController operations for CompanyUser\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "auth",
|
||||||
|
"description": "AuthController operations for Auth\n"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -11,10 +11,128 @@ info:
|
|||||||
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
basePath: /v1
|
basePath: /v1
|
||||||
paths:
|
paths:
|
||||||
/company_data/:
|
/auth/:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- company_data
|
- auth
|
||||||
|
description: get Auth
|
||||||
|
operationId: AuthController.GetAll
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: query
|
||||||
|
description: Filter. e.g. col1:v1,col2:v2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: fields
|
||||||
|
description: Fields returned. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: sortby
|
||||||
|
description: Sorted-by fields. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: order
|
||||||
|
description: Order corresponding to each sortby field, if single value, apply
|
||||||
|
to all sortby fields. e.g. desc,asc ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: limit
|
||||||
|
description: Limit the size of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: offset
|
||||||
|
description: Start position of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/.Auth'
|
||||||
|
"403":
|
||||||
|
description: ""
|
||||||
|
/auth/{id}:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- auth
|
||||||
|
description: get Auth by id
|
||||||
|
operationId: AuthController.GetOne
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The key for staticblock
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/.Auth'
|
||||||
|
"403":
|
||||||
|
description: :id is empty
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- auth
|
||||||
|
description: update the Auth
|
||||||
|
operationId: AuthController.Put
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to update
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for Auth content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/.Auth'
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/.Auth'
|
||||||
|
"403":
|
||||||
|
description: :id is not int
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- auth
|
||||||
|
description: delete the Auth
|
||||||
|
operationId: AuthController.Delete
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to delete
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{string} delete success!'
|
||||||
|
"403":
|
||||||
|
description: id is empty
|
||||||
|
/auth/login:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- auth
|
||||||
|
description: create Auth
|
||||||
|
operationId: AuthController.Create
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for Auth content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/.Auth'
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/.Auth'
|
||||||
|
"403":
|
||||||
|
description: body is empty
|
||||||
|
/companydata/:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- companydata
|
||||||
description: get CompanyData
|
description: get CompanyData
|
||||||
operationId: CompanyDataController.Get All
|
operationId: CompanyDataController.Get All
|
||||||
parameters:
|
parameters:
|
||||||
@ -52,7 +170,7 @@ paths:
|
|||||||
description: ""
|
description: ""
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- company_data
|
- companydata
|
||||||
description: create CompanyData
|
description: create CompanyData
|
||||||
operationId: CompanyDataController.Post
|
operationId: CompanyDataController.Post
|
||||||
parameters:
|
parameters:
|
||||||
@ -67,10 +185,10 @@ paths:
|
|||||||
description: '{int} models.CompanyData'
|
description: '{int} models.CompanyData'
|
||||||
"403":
|
"403":
|
||||||
description: body is empty
|
description: body is empty
|
||||||
/company_data/{id}:
|
/companydata/{id}:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- company_data
|
- companydata
|
||||||
description: get CompanyData by id
|
description: get CompanyData by id
|
||||||
operationId: CompanyDataController.Get One
|
operationId: CompanyDataController.Get One
|
||||||
parameters:
|
parameters:
|
||||||
@ -88,7 +206,7 @@ paths:
|
|||||||
description: :id is empty
|
description: :id is empty
|
||||||
put:
|
put:
|
||||||
tags:
|
tags:
|
||||||
- company_data
|
- companydata
|
||||||
description: update the CompanyData
|
description: update the CompanyData
|
||||||
operationId: CompanyDataController.Put
|
operationId: CompanyDataController.Put
|
||||||
parameters:
|
parameters:
|
||||||
@ -112,7 +230,7 @@ paths:
|
|||||||
description: :id is not int
|
description: :id is not int
|
||||||
delete:
|
delete:
|
||||||
tags:
|
tags:
|
||||||
- company_data
|
- companydata
|
||||||
description: delete the CompanyData
|
description: delete the CompanyData
|
||||||
operationId: CompanyDataController.Delete
|
operationId: CompanyDataController.Delete
|
||||||
parameters:
|
parameters:
|
||||||
@ -126,121 +244,6 @@ paths:
|
|||||||
description: '{string} delete success!'
|
description: '{string} delete success!'
|
||||||
"403":
|
"403":
|
||||||
description: id is empty
|
description: id is empty
|
||||||
/company_user/:
|
|
||||||
get:
|
|
||||||
tags:
|
|
||||||
- company_user
|
|
||||||
description: get CompanyUser
|
|
||||||
operationId: CompanyUserController.Get All
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: query
|
|
||||||
description: Filter. e.g. col1:v1,col2:v2 ...
|
|
||||||
type: string
|
|
||||||
- in: query
|
|
||||||
name: fields
|
|
||||||
description: Fields returned. e.g. col1,col2 ...
|
|
||||||
type: string
|
|
||||||
- in: query
|
|
||||||
name: sortby
|
|
||||||
description: Sorted-by fields. e.g. col1,col2 ...
|
|
||||||
type: string
|
|
||||||
- in: query
|
|
||||||
name: order
|
|
||||||
description: Order corresponding to each sortby field, if single value, apply
|
|
||||||
to all sortby fields. e.g. desc,asc ...
|
|
||||||
type: string
|
|
||||||
- in: query
|
|
||||||
name: limit
|
|
||||||
description: Limit the size of result set. Must be an integer
|
|
||||||
type: string
|
|
||||||
- in: query
|
|
||||||
name: offset
|
|
||||||
description: Start position of result set. Must be an integer
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: ""
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/models.CompanyUser'
|
|
||||||
"403":
|
|
||||||
description: ""
|
|
||||||
post:
|
|
||||||
tags:
|
|
||||||
- company_user
|
|
||||||
description: create CompanyUser
|
|
||||||
operationId: CompanyUserController.Post
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
description: body for CompanyUser content
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/models.CompanyUser'
|
|
||||||
responses:
|
|
||||||
"201":
|
|
||||||
description: '{int} models.CompanyUser'
|
|
||||||
"403":
|
|
||||||
description: body is empty
|
|
||||||
/company_user/{id}:
|
|
||||||
get:
|
|
||||||
tags:
|
|
||||||
- company_user
|
|
||||||
description: get CompanyUser by id
|
|
||||||
operationId: CompanyUserController.Get One
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: id
|
|
||||||
description: The key for staticblock
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: ""
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/models.CompanyUser'
|
|
||||||
"403":
|
|
||||||
description: :id is empty
|
|
||||||
put:
|
|
||||||
tags:
|
|
||||||
- company_user
|
|
||||||
description: update the CompanyUser
|
|
||||||
operationId: CompanyUserController.Put
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: id
|
|
||||||
description: The id you want to update
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
description: body for CompanyUser content
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/models.CompanyUser'
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: ""
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/models.CompanyUser'
|
|
||||||
"403":
|
|
||||||
description: :id is not int
|
|
||||||
delete:
|
|
||||||
tags:
|
|
||||||
- company_user
|
|
||||||
description: delete the CompanyUser
|
|
||||||
operationId: CompanyUserController.Delete
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: id
|
|
||||||
description: The id you want to delete
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: '{string} delete success!'
|
|
||||||
"403":
|
|
||||||
description: id is empty
|
|
||||||
/contact/:
|
/contact/:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
@ -471,7 +474,124 @@ paths:
|
|||||||
description: '{string} delete success!'
|
description: '{string} delete success!'
|
||||||
"403":
|
"403":
|
||||||
description: id is empty
|
description: id is empty
|
||||||
|
/user/:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
description: get CompanyUser
|
||||||
|
operationId: CompanyUserController.Get All
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: query
|
||||||
|
description: Filter. e.g. col1:v1,col2:v2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: fields
|
||||||
|
description: Fields returned. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: sortby
|
||||||
|
description: Sorted-by fields. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: order
|
||||||
|
description: Order corresponding to each sortby field, if single value, apply
|
||||||
|
to all sortby fields. e.g. desc,asc ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: limit
|
||||||
|
description: Limit the size of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: offset
|
||||||
|
description: Start position of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyUser'
|
||||||
|
"403":
|
||||||
|
description: ""
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
description: create CompanyUser
|
||||||
|
operationId: CompanyUserController.Post
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for CompanyUser content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyUser'
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: '{int} models.CompanyUser'
|
||||||
|
"403":
|
||||||
|
description: body is empty
|
||||||
|
/user/{id}:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
description: get CompanyUser by id
|
||||||
|
operationId: CompanyUserController.Get One
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The key for staticblock
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyUser'
|
||||||
|
"403":
|
||||||
|
description: :id is empty
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
description: update the CompanyUser
|
||||||
|
operationId: CompanyUserController.Put
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to update
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for CompanyUser content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyUser'
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyUser'
|
||||||
|
"403":
|
||||||
|
description: :id is not int
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
description: delete the CompanyUser
|
||||||
|
operationId: CompanyUserController.Delete
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to delete
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{string} delete success!'
|
||||||
|
"403":
|
||||||
|
description: id is empty
|
||||||
definitions:
|
definitions:
|
||||||
|
.Auth:
|
||||||
|
type: object
|
||||||
models.CompanyData:
|
models.CompanyData:
|
||||||
title: CompanyData
|
title: CompanyData
|
||||||
type: object
|
type: object
|
||||||
@ -560,12 +680,15 @@ tags:
|
|||||||
- name: contact
|
- name: contact
|
||||||
description: |
|
description: |
|
||||||
ContactController operations for Contact
|
ContactController operations for Contact
|
||||||
- name: company_data
|
- name: companydata
|
||||||
description: |
|
description: |
|
||||||
CompanyDataController operations for CompanyData
|
CompanyDataController operations for CompanyData
|
||||||
- name: post
|
- name: post
|
||||||
description: |
|
description: |
|
||||||
PostController operations for Post
|
PostController operations for Post
|
||||||
- name: company_user
|
- name: user
|
||||||
description: |
|
description: |
|
||||||
CompanyUserController operations for CompanyUser
|
CompanyUserController operations for CompanyUser
|
||||||
|
- name: auth
|
||||||
|
description: |
|
||||||
|
AuthController operations for Auth
|
||||||
|
Loading…
Reference in New Issue
Block a user