| @@ -14,7 +14,7 @@ version = Version | |||
| page = Page | |||
| template = Template | |||
| language = Language | |||
| create_new = Create new... | |||
| create_new = Create... | |||
| user_profile_and_more = User profile and more | |||
| signed_in_as = Signed in as | |||
| @@ -718,6 +718,7 @@ notices = System Notices | |||
| monitor = Monitoring | |||
| prev = Prev. | |||
| next = Next | |||
| total = Total: %d | |||
| dashboard.statistic = Statistic | |||
| dashboard.operations = Operations | |||
| @@ -804,7 +805,7 @@ repos.stars = Stars | |||
| repos.issues = Issues | |||
| auths.auth_manage_panel = Authentication Manage Panel | |||
| auths.new = Add New Authentication Source | |||
| auths.new = Add New Source | |||
| auths.name = Name | |||
| auths.type = Type | |||
| auths.enabled = Enabled | |||
| @@ -134,6 +134,12 @@ func (source *LoginSource) PAM() *PAMConfig { | |||
| return source.Cfg.(*PAMConfig) | |||
| } | |||
| // CountLoginSources returns number of login sources. | |||
| func CountLoginSources() int64 { | |||
| count, _ := x.Count(new(LoginSource)) | |||
| return count | |||
| } | |||
| func CreateSource(source *LoginSource) error { | |||
| _, err := x.Insert(source) | |||
| return err | |||
| @@ -237,7 +237,7 @@ func GetStatistic() (stats Statistic) { | |||
| stats.Counter.Follow, _ = x.Count(new(Follow)) | |||
| stats.Counter.Mirror, _ = x.Count(new(Mirror)) | |||
| stats.Counter.Release, _ = x.Count(new(Release)) | |||
| stats.Counter.LoginSource, _ = x.Count(new(LoginSource)) | |||
| stats.Counter.LoginSource = CountLoginSources() | |||
| stats.Counter.Webhook, _ = x.Count(new(Webhook)) | |||
| stats.Counter.Milestone, _ = x.Count(new(Milestone)) | |||
| stats.Counter.Label, _ = x.Count(new(Label)) | |||
| @@ -15,4 +15,8 @@ | |||
| } | |||
| } | |||
| } | |||
| .ui.header, | |||
| .ui.segment { | |||
| box-shadow: 0 1px 2px 0 rgba(34,36,38,.15); | |||
| } | |||
| } | |||
| @@ -34,6 +34,8 @@ func Authentications(ctx *middleware.Context) { | |||
| ctx.Handle(500, "GetAuths", err) | |||
| return | |||
| } | |||
| ctx.Data["Total"] = models.CountLoginSources() | |||
| ctx.HTML(200, AUTHS) | |||
| } | |||
| @@ -61,7 +63,7 @@ func NewAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) { | |||
| var u core.Conversion | |||
| switch models.LoginType(form.Type) { | |||
| case models.LDAP: | |||
| fallthrough | |||
| fallthrough | |||
| case models.DLDAP: | |||
| u = &models.LDAPConfig{ | |||
| Ldapsource: ldap.Ldapsource{ | |||
| @@ -152,7 +154,7 @@ func EditAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) { | |||
| var config core.Conversion | |||
| switch models.LoginType(form.Type) { | |||
| case models.LDAP: | |||
| fallthrough | |||
| fallthrough | |||
| case models.DLDAP: | |||
| config = &models.LDAPConfig{ | |||
| Ldapsource: ldap.Ldapsource{ | |||
| @@ -30,7 +30,7 @@ | |||
| <input class="ipt ipt-large ipt-radius {{if .Err_AuthName}}ipt-error{{end}}" id="name" name="name" value="{{.Source.Name}}" required /> | |||
| </div> | |||
| {{if eq $type 2 3}} | |||
| {{if eq $type 2 5}} | |||
| <div class="field"> | |||
| <label class="req" for="host">{{.i18n.Tr "admin.auths.host"}}</label> | |||
| <input class="ipt ipt-large ipt-radius {{if .Err_Host}}ipt-error{{end}}" id="host" name="host" value="{{.Source.LDAP.Host}}" required /> | |||
| @@ -57,7 +57,7 @@ | |||
| <input class="ipt ipt-large ipt-radius {{if .Err_UserBase}}ipt-error{{end}}" id="user_base" name="user_base" value="{{.Source.LDAP.UserBase}}" /> | |||
| </div> | |||
| {{end}} | |||
| {{if eq $type 3}} | |||
| {{if eq $type 5}} | |||
| <div class="field"> | |||
| <label class="req" for="user_dn">{{.i18n.Tr "admin.auths.user_dn"}}</label> | |||
| <input class="ipt ipt-large ipt-radius {{if .Err_UserDN}}ipt-error{{end}}" id="user_dn" name="user_dn" value="{{.Source.LDAP.UserDN}}" /> | |||
| @@ -85,7 +85,7 @@ | |||
| </div> | |||
| {{else if eq $type 4}} | |||
| {{else if eq $type 3}} | |||
| <div class="field"> | |||
| <label class="req">{{.i18n.Tr "admin.auths.smtp_auth"}}</label> | |||
| <select name="smtp_auth"> | |||
| @@ -105,7 +105,7 @@ | |||
| <input class="ipt ipt-large ipt-radius {{if .Err_SmtpPort}}ipt-error{{end}}" id="smtp_port" name="smtp_port" value="{{.Source.SMTP.Port}}" /> | |||
| </div> | |||
| {{else if eq $type 5}} | |||
| {{else if eq $type 4}} | |||
| <div class="field"> | |||
| <label class="req" for="pam_service_name">{{.i18n.Tr "admin.auths.pam_service_name"}}</label> | |||
| <input class="ipt ipt-large ipt-radius {{if .Err_PAMServiceName}}ipt-error{{end}}" id="pam_service_name" name="pam_service_name" value="{{.Source.PAM.ServiceName}}" /> | |||
| @@ -113,7 +113,7 @@ | |||
| {{end}} | |||
| <div class="field"> | |||
| {{if eq $type 4}} | |||
| {{if eq $type 3}} | |||
| <label></label> | |||
| <input name="tls" type="checkbox" {{if .Source.SMTP.TLS}}checked{{end}}> | |||
| <strong>{{.i18n.Tr "admin.auths.enable_tls"}}</strong> | |||
| @@ -1,59 +1,46 @@ | |||
| {{template "ng/base/head" .}} | |||
| {{template "ng/base/header" .}} | |||
| <div id="admin-wrapper"> | |||
| <div id="setting-wrapper" class="main-wrapper"> | |||
| <div id="admin-setting" class="container clear"> | |||
| {{template "admin/nav" .}} | |||
| <div class="grid-4-5 left"> | |||
| <div class="setting-content"> | |||
| {{template "ng/base/alert" .}} | |||
| <div id="setting-content"> | |||
| <div class="panel panel-radius"> | |||
| <div class="panel-header"> | |||
| <strong>{{.i18n.Tr "admin.auths.auth_manage_panel"}}</strong> | |||
| </div> | |||
| <div class="panel-body admin-panel"> | |||
| <a class="btn-blue btn-medium btn-link btn-radius" href="{{AppSubUrl}}/admin/auths/new">{{.i18n.Tr "admin.auths.new"}}</a> | |||
| <div class="admin-table"> | |||
| <table class="table table-striped"> | |||
| <thead> | |||
| <tr> | |||
| <th>Id</th> | |||
| <th>{{.i18n.Tr "admin.auths.name"}}</th> | |||
| <th>{{.i18n.Tr "admin.auths.type"}}</th> | |||
| <th>{{.i18n.Tr "admin.auths.enabled"}}</th> | |||
| <th>{{.i18n.Tr "admin.auths.updated"}}</th> | |||
| <th>{{.i18n.Tr "admin.users.created"}}</th> | |||
| <th>{{.i18n.Tr "admin.users.edit"}}</th> | |||
| </tr> | |||
| </thead> | |||
| <tbody> | |||
| {{range .Sources}} | |||
| <tr> | |||
| <td>{{.ID}}</td> | |||
| <td><a href="{{AppSubUrl}}/admin/auths/{{.ID}}">{{.Name}}</a></td> | |||
| <td>{{.TypeString}}</td> | |||
| <td><i class="fa fa{{if .IsActived}}-check{{end}}-square-o"></i></td> | |||
| <td><span title="{{DateFmtLong .Updated}}">{{DateFmtShort .Updated}}</span></td> | |||
| <td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created}}</span></td> | |||
| <td><a href="{{AppSubUrl}}/admin/auths/{{.ID}}"><i class="fa fa-pencil-square-o"></i></a></td> | |||
| </tr> | |||
| {{end}} | |||
| </tbody> | |||
| </table> | |||
| {{if or .LastPageNum .NextPageNum}} | |||
| <ul class="pagination"> | |||
| {{if .LastPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="{{AppSubUrl}}/admin/auths?p={{.LastPageNum}}">« Prev.</a></li>{{end}} | |||
| {{if .NextPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="{{AppSubUrl}}/admin/auths?p={{.NextPageNum}}">» Next</a></li>{{end}} | |||
| </ul> | |||
| {{end}} | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| {{template "base/head" .}} | |||
| <div class="admin authentication"> | |||
| <div class="ui container"> | |||
| <div class="ui grid"> | |||
| {{template "admin/navbar" .}} | |||
| <div class="twelve wide column content"> | |||
| {{template "base/alert" .}} | |||
| <h4 class="ui top attached header"> | |||
| {{.i18n.Tr "admin.auths.auth_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) | |||
| <div class="ui right"> | |||
| <a class="ui blue tiny button" href="{{AppSubUrl}}/admin/auths/new">{{.i18n.Tr "admin.auths.new"}}</a> | |||
| </div> | |||
| </h4> | |||
| <div class="ui attached table segment"> | |||
| <table class="ui very basic striped table"> | |||
| <thead> | |||
| <tr> | |||
| <th>ID</th> | |||
| <th>{{.i18n.Tr "admin.auths.name"}}</th> | |||
| <th>{{.i18n.Tr "admin.auths.type"}}</th> | |||
| <th>{{.i18n.Tr "admin.auths.enabled"}}</th> | |||
| <th>{{.i18n.Tr "admin.auths.updated"}}</th> | |||
| <th>{{.i18n.Tr "admin.users.created"}}</th> | |||
| <th>{{.i18n.Tr "admin.users.edit"}}</th> | |||
| </tr> | |||
| </thead> | |||
| <tbody> | |||
| {{range .Sources}} | |||
| <tr> | |||
| <td>{{.ID}}</td> | |||
| <td><a href="{{AppSubUrl}}/admin/auths/{{.ID}}">{{.Name}}</a></td> | |||
| <td>{{.TypeString}}</td> | |||
| <td><i class="fa fa{{if .IsActived}}-check{{end}}-square-o"></i></td> | |||
| <td><span class="poping up" data-content="{{DateFmtLong .Updated}}" data-variation="tiny">{{DateFmtShort .Updated}}</span></td> | |||
| <td><span class="poping up" data-content="{{DateFmtLong .Created}}" data-variation="tiny">{{DateFmtShort .Created}}</span></td> | |||
| <td><a href="{{AppSubUrl}}/admin/auths/{{.ID}}"><i class="fa fa-pencil-square-o"></i></a></td> | |||
| </tr> | |||
| {{end}} | |||
| </tbody> | |||
| </table> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| {{template "ng/base/footer" .}} | |||
| {{template "base/footer" .}} | |||