[ADD]search is_member is_admin

This commit is contained in:
viletyy 2021-02-01 14:50:56 +08:00
parent c6269f44ee
commit 152e301bf3
12 changed files with 51 additions and 3 deletions

View File

@ -4,6 +4,8 @@ class Organizations::OrganizationUsersController < Organizations::BaseController
def index
@organization_users = @organization.organization_users.includes(:user)
search = params[:search].to_s.downcase
@organization_users = @organization_users.joins(:user).where("LOWER(concat(users.lastname, users.firstname, users.login, users.mail, users.nickname)) LIKE ?", "%#{search.split(" ").join('|')}%") if search.present?
@organization_users = kaminari_paginate(@organization_users)
end

View File

@ -18,6 +18,8 @@ class Organizations::OrganizationsController < Organizations::BaseController
end
def show
@is_admin = can_edit_org?
@is_member = @organization.is_member?(current_user.id)
end
def create

View File

@ -14,6 +14,19 @@ class Organizations::ProjectsController < Organizations::BaseController
@projects = paginate(@projects)
end
def search
tip_exception("请输入搜索关键词") if params[:search].nil?
public_projects_sql = @organization.projects.where(is_public: true).to_sql
private_projects_sql = @organization.projects
.where(is_public: false)
.joins(team_projects: {team: :team_users})
.where(team_users: {user_id: current_user.id}).to_sql
@projects = Project.from("( #{ public_projects_sql} UNION #{ private_projects_sql } ) AS projects")
@projects = @projects.ransack(name_or_identifier_cont: params[:search]).result
@projects = @projects.includes(:owner).order("projects.#{sort} #{sort_direction}")
end
private
def load_organization

View File

@ -7,6 +7,9 @@ class Organizations::TeamUsersController < Organizations::BaseController
def index
@team_users = @team.team_users
search = params[:search].to_s.downcase
@team_users = @team_users.joins(:user).where("LOWER(concat(users.lastname, users.firstname, users.login, users.mail, users.nickname)) LIKE ?", "%#{search.split(" ").join('|')}%") if search.present?
@team_users = kaminari_paginate(@team_users)
end

View File

@ -14,6 +14,8 @@ class Organizations::TeamsController < Organizations::BaseController
end
def show
@is_admin = can_edit_org?
@is_member = @team.is_member?(current_user.id)
end
def create

View File

@ -78,6 +78,10 @@ class Organization < Owner
self.create!(login: name, gitea_token: gitea_token)
end
def is_member?(user_id)
organization_users.where(user_id: user_id).present?
end
def is_owner?(user_id)
team_users.joins(:team).where(user_id: user_id, teams: {authorize: %w(owner)}).present?
end

View File

@ -47,4 +47,8 @@ class Team < ApplicationRecord
end
end
def is_member?(user_id)
team_users.where(user_id: user_id).present?
end
end

View File

@ -1 +1,3 @@
json.partial! "detail", organization: @organization
json.partial! "detail", organization: @organization
json.is_admin @is_admin
json.is_member @is_member

View File

@ -0,0 +1,9 @@
json.total_count @projects.size
json.projects @projects.each do |project|
json.(project, :id, :name, :identifier, :description, :forked_count, :praises_count, :forked_from_project_id)
json.mirror_url project.repository&.mirror_url
json.type project.numerical_for_project_type
json.praised project.praised_by?(current_user)
json.last_update_time render_unix_time(project.updated_on)
json.time_ago time_from_now(project.updated_on)
end

View File

@ -1,6 +1,7 @@
json.id team_project.id
json.project do
json.owner_name team_project&.project&.owner&.login
json.owner_image_url url_to_avatar(team_project&.project&.owner)
json.name team_project&.project&.name
json.identifier team_project&.project&.identifier
end

View File

@ -1 +1,3 @@
json.partial! "detail", team: @team, organization: @organization
json.partial! "detail", team: @team, organization: @organization
json.is_admin @is_admin
json.is_member @is_member

View File

@ -120,7 +120,11 @@ Rails.application.routes.draw do
end
resources :team_projects, only: [:index, :create, :destroy] do ;end
end
resources :projects, only: [:index]
resources :projects, only: [:index] do
collection do
get :search
end
end
end
end