Skip to content

org/members: display 2FA members states + optimize sql requests #7621

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 23 commits into from
Aug 2, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
lay down UserList bases
  • Loading branch information
sapk committed Jul 28, 2019
commit b2b2cbf2713bfddaa72328cc7f2f8a52c63bcdc1
2 changes: 1 addition & 1 deletion models/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ type User struct {
NumTeams int
NumMembers int
Teams []*Team `xorm:"-"`
Members []*User `xorm:"-"`
Members UserList `xorm:"-"`
Visibility structs.VisibleType `xorm:"NOT NULL DEFAULT 0"`

// Preferences
Expand Down
39 changes: 39 additions & 0 deletions models/userlist.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// Copyright 2019 The Gitea 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

type UserList []*User

//TODO paginate

// IsPublicMember returns true if user public his/her membership in given organization.
func (ul UserList) IsPublicMember(orgID int64) []bool {
results := make([]bool, len(ul))
//TODO use directly xorm
for i, u := range ul {
results[i] = u.IsPublicMember(orgID)
}
return results
}

// IsUserOrgOwner returns true if user is in the owner team of given organization.
func (ul UserList) IsUserOrgOwner(orgID int64) []bool {
results := make([]bool, len(ul))
//TODO use directly xorm
for i, u := range ul {
results[i] = u.IsUserOrgOwner(orgID)
}
return results
}

// IsTwoFaEnrolled return state of 2FA enrollement
func (ul UserList) IsTwoFaEnrolled() []bool {
results := make([]bool, len(ul))
//TODO use directly xorm
for i, u := range ul {
results[i] = u.IsTwoFaEnrolled()
}
return results
}
3 changes: 3 additions & 0 deletions routers/org/members.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ func Members(ctx *context.Context) {
return
}
ctx.Data["Members"] = org.Members
ctx.Data["MembersIsPublicMember"] = org.Members.IsPublicMember(org.ID)
ctx.Data["MembersIsUserOrgOwner"] = org.Members.IsUserOrgOwner(org.ID)
ctx.Data["MembersIsTwoFaEnrolled"] = org.Members.IsTwoFaEnrolled()

ctx.HTML(200, tplMembers)
}
Expand Down
8 changes: 4 additions & 4 deletions templates/org/member/members.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
{{template "base/alert" .}}

<div class="list">
{{range .Members}}
{{ range $id, $member := .Members}}
<div class="item ui grid">
<div class="ui one wide column">
<img class="ui avatar" src="{{.SizedRelAvatarLink 48}}">
Expand All @@ -19,7 +19,7 @@
{{$.i18n.Tr "org.members.membership_visibility"}}
</div>
<div class="meta">
{{ $isPublic := .IsPublicMember $.Org.ID}}
{{ $isPublic := index $.MembersIsPublicMember $id}}
{{if $isPublic}}
<strong>{{$.i18n.Tr "org.members.public"}}</strong>
{{if or (eq $.SignedUser.ID .ID) $.IsOrganizationOwner}}(<a href="{{$.OrgLink}}/members/action/private?uid={{.ID}}">{{$.i18n.Tr "org.members.public_helper"}}</a>){{end}}
Expand All @@ -34,15 +34,15 @@
{{$.i18n.Tr "org.members.member_role"}}
</div>
<div class="meta">
<strong>{{if .IsUserOrgOwner $.Org.ID}}<span class="octicon octicon-shield"></span> {{$.i18n.Tr "org.members.owner"}}{{else}}{{$.i18n.Tr "org.members.member"}}{{end}}</strong>
<strong>{{if index $.MembersIsUserOrgOwner $id}}<span class="octicon octicon-shield"></span> {{$.i18n.Tr "org.members.owner"}}{{else}}{{$.i18n.Tr "org.members.member"}}{{end}}</strong>
</div>
</div>
<div class="ui one wide column center">
<div class="meta">
2FA
</div>
<div class="meta">
<strong><span class="octicon {{if .IsTwoFaEnrolled}}octicon-check text green{{else}}octicon-x{{end}}"></span></strong>
<strong><span class="octicon {{if index $.MembersIsTwoFaEnrolled $id}}octicon-check text green{{else}}octicon-x{{end}}"></span></strong>
</div>
</div>
<div class="ui four wide column">
Expand Down