Add UI for register user

tokarchuk/v1.17
Unknown 11 years ago
parent 5da2ad7435
commit 3eb1ab9e8b
  1. 5
      bee.json
  2. 7
      gogs.go
  3. 17
      models/access.go
  4. 4
      models/user.go
  5. 38
      routers/user/user.go
  6. 15
      templates/base/base.tmpl
  7. 2
      templates/base/footer.tmpl
  8. 30
      templates/base/head.tmpl
  9. 4
      templates/base/navbar.tmpl
  10. 11
      templates/dashboard.tmpl
  11. 6
      templates/status/403.tmpl
  12. 44
      templates/user/signup.tmpl

@ -7,9 +7,12 @@
"go_install": true, "go_install": true,
"watch_ext": [], "watch_ext": [],
"dir_structure": { "dir_structure": {
"watch_all": true,
"controllers": "routers", "controllers": "routers",
"models": "", "models": "",
"others": [] "others": [
"utils"
]
}, },
"cmd_args": [], "cmd_args": [],
"envs": [] "envs": []

@ -12,18 +12,19 @@ import (
"github.com/martini-contrib/render" "github.com/martini-contrib/render"
"github.com/gogits/gogs/routers" "github.com/gogits/gogs/routers"
"github.com/gogits/gogs/routers/user"
"github.com/gogits/gogs/utils" "github.com/gogits/gogs/utils"
"github.com/gogits/gogs/utils/log" "github.com/gogits/gogs/utils/log"
) )
const APP_VER = "0.0.0.0212" const APP_VER = "0.0.0.0217"
func init() { func init() {
} }
func main() { func main() {
log.Info("App Name: %s", utils.Cfg.MustValue("", "APP_NAME")) log.Info("%s %s", utils.Cfg.MustValue("", "APP_NAME"), APP_VER)
m := martini.Classic() m := martini.Classic()
@ -32,6 +33,8 @@ func main() {
// Routers. // Routers.
m.Get("/", routers.Dashboard) m.Get("/", routers.Dashboard)
m.Get("/user/signin", user.SignIn)
m.Any("/user/signup", user.SignUp)
listenAddr := fmt.Sprintf("%s:%s", listenAddr := fmt.Sprintf("%s:%s",
utils.Cfg.MustValue("server", "HTTP_ADDR"), utils.Cfg.MustValue("server", "HTTP_ADDR"),

@ -1,3 +1,7 @@
// Copyright 2014 The Gogs 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 models package models
import ( import (
@ -6,8 +10,8 @@ import (
) )
const ( const (
Readable = iota + 1 AU_READABLE = iota + 1
Writable AU_WRITABLE
) )
type Access struct { type Access struct {
@ -24,6 +28,11 @@ func AddAccess(access *Access) error {
} }
// if one user can read or write one repository // if one user can read or write one repository
func HasAccess(userName, repoName, mode string) (bool, error) { func HasAccess(userName, repoName string, mode int) (bool, error) {
return orm.Get(&Access{0, strings.ToLower(userName), strings.ToLower(repoName), mode}) return orm.Get(&Access{
Id: 0,
UserName: strings.ToLower(userName),
RepoName: strings.ToLower(repoName),
Mode: mode,
})
} }

@ -98,6 +98,10 @@ func RegisterUser(user *User) (err error) {
if err = validateUser(user.Name); err != nil { if err = validateUser(user.Name); err != nil {
return err return err
} }
user.LowerName = strings.ToLower(user.Name)
// TODO: generate Avatar address.
user.Created = time.Now()
user.Updated = time.Now()
_, err = orm.Insert(user) _, err = orm.Insert(user)
return err return err
} }

@ -0,0 +1,38 @@
// Copyright 2014 The Gogs 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 user
import (
"fmt"
"net/http"
"github.com/martini-contrib/render"
//"github.com/gogits/gogs/utils/log"
"github.com/gogits/gogs/models"
)
func SignIn(r render.Render) {
r.Redirect("/user/signup", 302)
}
func SignUp(req *http.Request, r render.Render) {
if req.Method == "GET" {
r.HTML(200, "user/signup", map[string]interface{}{
"Title": "Sign Up",
})
return
}
// TODO: validate form.
err := models.RegisterUser(&models.User{
Name: req.FormValue("username"),
Email: req.FormValue("email"),
Passwd: req.FormValue("passwd"),
})
r.HTML(403, "status/403", map[string]interface{}{
"Title": fmt.Sprintf("%v", err),
})
}

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<head>
{{template "base/head" .}}
{{template "head" .}}
</head>
<body>
<noscript>Please enable JavaScript in your browser!</noscript>
{{template "base/navbar" .}}
<div class="container">
{{template "body" .}}
</div>
{{template "base/footer" .}}
</body>
</html>

@ -0,0 +1,2 @@
</body>
</html>

@ -1,14 +1,22 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <!DOCTYPE html>
<link rel="shortcut icon" href="img/favicon.png" /> <html>
<meta name="author" content="Gogs - Go Git Service" /> <head>
<meta name="description" content="Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="go, git"> <link rel="shortcut icon" href="/img/favicon.png" />
<meta name="author" content="Gogs - Go Git Service" />
<meta name="description" content="Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language" />
<meta name="keywords" content="go, git">
<!-- Stylesheets --> <!-- Stylesheets -->
<link href="css/bootstrap.min.css" rel="stylesheet" /> <link href="/css/bootstrap.min.css" rel="stylesheet" />
<link href="css/todc-bootstrap.min.css" rel="stylesheet" /> <link href="/css/todc-bootstrap.min.css" rel="stylesheet" />
<link href="css/font-awesome.min.css" rel="stylesheet" /> <link href="/css/font-awesome.min.css" rel="stylesheet" />
<link href="css/gogs.css" rel="stylesheet" /> <link href="/css/gogs.css" rel="stylesheet" />
<script src="js/jquery-1.10.1.min.js"></script> <script src="/js/jquery-1.10.1.min.js"></script>
<script src="js/bootstrap.min.js"></script> <script src="/js/bootstrap.min.js"></script>
<title>{{.Title}} | Gogs - Go Git Service</title>
</head>
<body>
<noscript>Please enable JavaScript in your browser!</noscript>

@ -4,7 +4,7 @@
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#gogs-navbar-collapse"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#gogs-navbar-collapse">
<i class="fa fa-bars"></i> <i class="fa fa-bars"></i>
</button> </button>
<a class="navbar-brand" href="/"><img src="img/favicon.png" alt="Gogs Logo"></a> <a class="navbar-brand" href="/"><img src="/img/favicon.png" alt="Gogs Logo"></a>
</div> </div>
<div class="collapse navbar-collapse" id="gopmweb-navbar-collapse"> <div class="collapse navbar-collapse" id="gopmweb-navbar-collapse">
@ -12,7 +12,7 @@
<li><a>{{.Title}}</a></li> <li><a>{{.Title}}</a></li>
</ul> </ul>
<a href="/login" class="navbar-right btn btn-success navbar-btn">Log In</a> <a href="/user/signin" class="navbar-right btn btn-success navbar-btn">Sign In</a>
</div> </div>
</div> </div>
</nav> </nav>

@ -1,5 +1,6 @@
{{template "base/base" .}} {{template "base/head" .}}
{{define "head"}} <title>{{.Title}} | Gogs - Go Git Service</title>{{end}} {{template "base/navbar" .}}
{{define "body"}} <div class="container">
Website is still in the progress of building...please come back later! Website is still in the progress of building...please come back later!
{{end}} </div>
{{template "base/footer" .}}

@ -0,0 +1,6 @@
{{template "base/head" .}}
{{template "base/navbar" .}}
<div class="container">
403 Forbidden
</div>
{{template "base/footer" .}}

@ -0,0 +1,44 @@
{{template "base/head" .}}
{{template "base/navbar" .}}
<div class="container">
<form action="/user/signup" method="post" class="form-horizontal">
<div class="form-group">
<label class="col-md-4 control-label">Username: </label>
<div class="col-md-3">
<input name="username" class="form-control" placeholder="Type your username">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">Email: </label>
<div class="col-md-3">
<input name="email" class="form-control" placeholder="Type your e-mail address">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">Password: </label>
<div class="col-md-3">
<input name="passwd" type="password" class="form-control" placeholder="Type your password">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">Re-type: </label>
<div class="col-md-3">
<input type="password" class="form-control" placeholder="Re-type your password">
</div>
</div>
<div class="form-group">
<div class="col-md-offset-4 col-md-3">
<button type="submit" class="btn btn-info">Sign Up</button>
</div>
</div>
<div class="col-md-offset-4 col-md-3">
<a href="/user/signin">Already have an account? Sign in now!</a>
</div>
</form>
</div>
{{template "base/footer" .}}
Loading…
Cancel
Save