diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ee81765a5..14892ce7a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -329,7 +329,6 @@ class ApplicationController < ActionController::Base User.current = user end end - # if !User.current.logged? && Rails.env.development? # User.current = User.find 1 # end diff --git a/app/controllers/concerns/register_helper.rb b/app/controllers/concerns/register_helper.rb index 3a23a2103..f40872905 100644 --- a/app/controllers/concerns/register_helper.rb +++ b/app/controllers/concerns/register_helper.rb @@ -1,13 +1,17 @@ module RegisterHelper extend ActiveSupport::Concern - def autologin_register(username, email, password, platform= 'forge') + def autologin_register(username, email, password, platform= 'forge', need_edit_password = false) result = {message: nil, user: nil} user = User.new(admin: false, login: username, mail: email, type: "User") user.password = password user.platform = platform - user.activate + if need_edit_password + user.need_edit_password + else + user.activate + end return unless user.valid? diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index 685e245c0..51b0e7a86 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -53,7 +53,7 @@ class Oauth::EducoderController < Oauth::BaseController if current_user.blank? || !current_user.logged? new_user = true login = User.generate_login('E') - reg_result = autologin_register(login,"#{login}@forge.com", "Ec#{login}2021#", 'educoder') + reg_result = autologin_register(login,"#{login}@forge.com", "Ec#{login}2021#", 'educoder', true) if reg_result[:message].blank? open_user = OpenUsers::Educoder.create!(user_id: reg_result[:user][:id], uid: result['login'], extra: result) successful_authentication(open_user.user) diff --git a/app/models/user.rb b/app/models/user.rb index 5bfe3b6e6..5d03498c1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -79,6 +79,7 @@ class User < Owner STATUS_ACTIVE = 1 STATUS_REGISTERED = 2 STATUS_LOCKED = 3 + STATUS_EDIT_PASSWORD = 4 # tpi tpm权限控制 EDU_ADMIN = 1 # 超级管理员 @@ -161,7 +162,7 @@ class User < Owner has_many :organizations, through: :organization_users # Groups and active users - scope :active, lambda { where(status: STATUS_ACTIVE) } + scope :active, lambda { where(status: [STATUS_ACTIVE, STATUS_EDIT_PASSWORD]) } scope :like, lambda { |keywords| where("LOWER(concat(lastname, firstname, login, mail)) LIKE ?", "%#{keywords.split(" ").join('|')}%") unless keywords.blank? } @@ -378,6 +379,10 @@ class User < Owner status == STATUS_LOCKED end + def need_edit_password? + status == STATUS_EDIT_PASSWORD + end + def activate self.status = STATUS_ACTIVE end @@ -390,6 +395,10 @@ class User < Owner self.status = STATUS_LOCKED end + def need_edit_password + self.status = STATUS_EDIT_PASSWORD + end + def activate! update_attribute(:status, STATUS_ACTIVE) end @@ -402,6 +411,10 @@ class User < Owner update_attribute(:status, STATUS_LOCKED) end + def need_edit_password! + update_attribute(:status, STATUS_LOCKED) + end + # 课程用户身份 def course_identity(course) if !logged? diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb index 3204e5fc7..8ae787c52 100644 --- a/app/services/projects/fork_service.rb +++ b/app/services/projects/fork_service.rb @@ -24,6 +24,8 @@ class Projects::ForkService < ApplicationService new_repository.identifier = @project.identifier new_repository.save! + ProjectUnit.init_types(clone_project.id) + result = Gitea::Repository::ForkService.new(@project.owner, @target_owner, @project.identifier, @organization).call @project.update_column('forked_count', @project&.forked_count.to_i + 1) diff --git a/app/views/users/get_user_info.json.jbuilder b/app/views/users/get_user_info.json.jbuilder index d9aa44025..be11d6c0e 100644 --- a/app/views/users/get_user_info.json.jbuilder +++ b/app/views/users/get_user_info.json.jbuilder @@ -8,6 +8,7 @@ json.is_teacher @user.user_extension&.teacher? json.user_identity @user.identity json.tidding_count 0 json.user_phone_binded @user.phone.present? +json.need_edit_password @user.need_edit_password? # json.phone @user.phone # json.email @user.mail json.profile_completed @user.profile_completed?