Merge remote-tracking branch 'origin/dev_aliyun' into dev_aliyun

issues25489
杨树明 6 years ago
commit 5b5338a5e4

@ -78,12 +78,12 @@ class AccountsController < ApplicationController
return normal_status(-2, "违反平台使用规范,账号已被锁定") if @user.locked? return normal_status(-2, "违反平台使用规范,账号已被锁定") if @user.locked?
login_control = LimitForbidControl::UserLogin.new(@user) login_control = LimitForbidControl::UserLogin.new(@user)
return normal_status(-2, "登录密码出错已达上限,将锁定密码#{login_control.forbid_expires/60}分钟") if login_control.forbid? return normal_status(-2, "登录密码出错已达上限,账号已被锁定, 请#{login_control.forbid_expires/60}分钟后重新登录或找回登录密码,") if login_control.forbid?
password_ok = @user.check_password?(params[:password].to_s) password_ok = @user.check_password?(params[:password].to_s)
unless password_ok unless password_ok
login_control.increment! login_control.increment!
return normal_status(-2, "误的账号或密码") return normal_status(-2, "你已经输错密码#{login_control.error_times}次,还剩余#{login_control.remain_times}次机会")
end end
successful_authentication(@user) successful_authentication(@user)
@ -111,9 +111,11 @@ class AccountsController < ApplicationController
return normal_status(-2, "验证码已失效") if !verifi_code&.effective? return normal_status(-2, "验证码已失效") if !verifi_code&.effective?
user.password, user.password_confirmation = params[:new_password], params[:new_password_confirmation] user.password, user.password_confirmation = params[:new_password], params[:new_password_confirmation]
if user.save! ActiveRecord::Base.transaction do
sucess_status user.save!
LimitForbidControl::UserLogin.new(user).clear
end end
sucess_status
rescue Exception => e rescue Exception => e
uid_logger_error(e.message) uid_logger_error(e.message)
tip_exception("密码重置失败") tip_exception("密码重置失败")

@ -40,6 +40,14 @@ class LimitForbidControl::Base
end end
end end
def error_times
Rails.cache.read(cache_key).to_i
end
def remain_times
allow_times - error_times
end
def clear def clear
Rails.logger.info("[LimitForbidControl] Clear #{cache_key}") Rails.logger.info("[LimitForbidControl] Clear #{cache_key}")
Rails.cache.delete(forbid_cache_key) Rails.cache.delete(forbid_cache_key)

@ -51,10 +51,10 @@ class UseBank extends Component{
} }
fetchAll = (arg_page) => { fetchAll = (arg_page) => {
console.log('fetchAll') console.log('fetchAll')
const courseId = this.props.match.params.coursesId const courseId = this.props.match.params.coursesId
const page = arg_page || this.state.page; const page = arg_page || this.state.page;
const { nav_my, search } = this.state const { nav_my, search } = this.state
/** /**
normal 普通作业题库 group 分组作业题库 poll问卷题库 exercise试卷题库; gtask 毕设选题题库gtopic 毕设任务 normal 普通作业题库 group 分组作业题库 poll问卷题库 exercise试卷题库; gtask 毕设选题题库gtopic 毕设任务
filter string public公共题库 2 myself我的题库 1 filter string public公共题库 2 myself我的题库 1
*/ */
@ -142,11 +142,11 @@ class UseBank extends Component{
this.setState({ this.setState({
hometypepvisible:true hometypepvisible:true
}) })
const courseId = this.props.match.params.coursesId const courseId = this.props.match.params.coursesId
let url = `/question_banks/save_banks.json` let url = `/question_banks/save_banks.json`
this.setState({ loading: true }) this.setState({ loading: true })
axios.post(url axios.post(url
,{ , {
"object_type": object_type, "object_type": object_type,
"bank_id": checkBoxValues, "bank_id": checkBoxValues,
"course_id": courseId "course_id": courseId
@ -167,7 +167,7 @@ class UseBank extends Component{
hometypepvisible:false, hometypepvisible:false,
checkBoxValues:[] checkBoxValues:[]
}) })
this.props.showNotification(response.data.message) this.props.showNotification(response.data.message)
} }
}) })
.catch( (error) =>{ .catch( (error) =>{
@ -267,14 +267,14 @@ class UseBank extends Component{
></Search> ></Search>
</div> </div>
{ {
object_list && object_list.length == 0 && page == 1 ? "" : nav_my==='myself'? object_list && object_list.length == 0 && page == 1 ? "" : nav_my === 'myself' ?
<p className="color-grey-6 mb25 edu-txt-center">选用对象你在课堂{engNameMap[object_type]}列表中已<span className="color-orange-tip">加入题库</span>{engNameMap[object_type]}</p> <p className="color-grey-6 mb25 edu-txt-center">选用对象你在课堂{engNameMap[object_type]}列表中已<span className="color-orange-tip">加入题库</span>{engNameMap[object_type]}</p>
: :
<p className="color-grey-6 mb25 edu-txt-center">选用对象题库中已设置成公共属性的所有{engNameMap[object_type]}</p> <p className="color-grey-6 mb25 edu-txt-center">选用对象题库中已设置成公共属性的所有{engNameMap[object_type]}</p>
} }
{ {
nav_my !='myself' && is_teacher == false ? nav_my != 'myself' && is_teacher == false ?
<div style={{"height":"230px"}} className="d_middle edu-txt-center"> <div style={{"height":"230px"}} className="d_middle edu-txt-center">
<div> <div>
<p className="font-16 mb20 color-grey-3">通过职业认证的教师才能访问公共题库</p> <p className="font-16 mb20 color-grey-3">通过职业认证的教师才能访问公共题库</p>
@ -296,7 +296,7 @@ class UseBank extends Component{
> >
<Checkbox.Group style={{ width: '100%' }} onChange={this.onCheckBoxChange} value={checkBoxValues}> <Checkbox.Group style={{ width: '100%' }} onChange={this.onCheckBoxChange} value={checkBoxValues}>
{ object_list && object_list.map( item => { { object_list && object_list.map( item => {
/** /**
course_list_name: "C++程序设计" course_list_name: "C++程序设计"
id: 3889 id: 3889
name: "作业3第四章 控制结构 " name: "作业3第四章 控制结构 "
@ -313,7 +313,7 @@ class UseBank extends Component{
>{item.course_list_name}</span> >{item.course_list_name}</span>
{ {
nav_my==='public' && nav_my === 'public' &&
<span className="fl with16 color-grey-6 task-hide pl10">{item.username}</span> <span className="fl with16 color-grey-6 task-hide pl10">{item.username}</span>
} }
{nav_my === "myself" ? {nav_my === "myself" ?
@ -350,10 +350,10 @@ class UseBank extends Component{
} }
</p> */} </p> */}
</InfiniteScroll> </InfiniteScroll>
</div> </div>
} }
<p style={{height:"20px",lineHeight:"20px;", marginTop: '4px'}}> <p style={{height: "20px", lineHeight: "20px;", marginTop: '4px'}}>
{ {
isChecked !="" ? <span className="color-red">{isChecked}</span>:"" isChecked !="" ? <span className="color-red">{isChecked}</span>:""
} }

Loading…
Cancel
Save