mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-03 03:40:49 +08:00
[ADD]组织模块相关代码
This commit is contained in:
11
app/controllers/organizations/base_controller.rb
Normal file
11
app/controllers/organizations/base_controller.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
class Organizations::BaseController < ApplicationController
|
||||
include ApplicationHelper
|
||||
|
||||
def load_organization
|
||||
@organization = Organization.find_by(login: params[:id]) || Organization.find_by(id: params[:id])
|
||||
|
||||
render_not_found if @organization.nil?
|
||||
|
||||
@organization
|
||||
end
|
||||
end
|
||||
74
app/controllers/organizations/organizations_controller.rb
Normal file
74
app/controllers/organizations/organizations_controller.rb
Normal file
@@ -0,0 +1,74 @@
|
||||
class Organizations::OrganizationsController < Organizations::BaseController
|
||||
before_action :require_login, except: [:index]
|
||||
before_action :convert_base64_image!, only: [:create, :update]
|
||||
before_action :load_organization, only: [:update, :destroy]
|
||||
|
||||
def index
|
||||
if current_user.logged?
|
||||
@organizations = Organization.with_visibility(%w(common limited)) +
|
||||
Organization.with_visibility("privacy").joins(:organization_users).where(organization_users: {user_id: current_user.id})
|
||||
else
|
||||
@organizations = Organization.with_visibility("common")
|
||||
end
|
||||
kaminary_array_paginate(@organizations)
|
||||
end
|
||||
|
||||
def create
|
||||
ActiveRecord::Base.transaction do
|
||||
@organization = Organizations::CreateService.call(current_user, organization_params)
|
||||
Util.write_file(@image, avatar_path(@organization)) if params[:image].present?
|
||||
end
|
||||
rescue Exception => e
|
||||
uid_logger_error(e.message)
|
||||
tip_exception(e.message)
|
||||
end
|
||||
|
||||
def update
|
||||
ActiveRecord::Base.transaction do
|
||||
login = @organization.login
|
||||
@organization.update!(login: organization_params[:name]) if organization_params[:name].present?
|
||||
@organization.organization_extension.update_attributes!(organization_params.except(:name))
|
||||
Gitea::Organization::UpdateService.call(current_user.gitea_token, login, @organization)
|
||||
Util.write_file(@image, avatar_path(@organization)) if params[:image].present?
|
||||
end
|
||||
rescue Exception => e
|
||||
uid_logger_error(e.message)
|
||||
tip_exception(e.message)
|
||||
end
|
||||
|
||||
def destroy
|
||||
render_unauthorized unless current_user.check_password?(password)
|
||||
render_forbidden("您没有权限进行该操作") unless @organization.check_owner?(current_user)
|
||||
ActiveRecord::Base.transaction do
|
||||
Gitea::Organization::DeleteService.call(current_user.gitea_token, @organization.login)
|
||||
@organization.destroy!
|
||||
end
|
||||
render_ok
|
||||
rescue Exception => e
|
||||
uid_logger_error(e.message)
|
||||
tip_exception(e.message)
|
||||
end
|
||||
|
||||
private
|
||||
def convert_base64_image!
|
||||
max_size = EduSetting.get('upload_avatar_max_size')
|
||||
@image = Util.convert_base64_image(params[:image].to_s.strip, max_size: max_size)
|
||||
rescue Base64ImageConverter::Error => ex
|
||||
render_error(ex.message)
|
||||
end
|
||||
|
||||
def avatar_path(organization)
|
||||
ApplicationController.helpers.disk_filename(organization.class, organization.id)
|
||||
end
|
||||
|
||||
def organization_params
|
||||
params.permit(:name, :description, :website, :location,
|
||||
:repo_admin_change_team_access, :visibility,
|
||||
:max_repo_creation)
|
||||
end
|
||||
|
||||
def password
|
||||
params.fetch(:password, "")
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user