oauth2 code授权方式登录
This commit is contained in:
parent
bf2e6269f9
commit
abfefdf8eb
|
@ -0,0 +1,39 @@
|
||||||
|
class Oauth2Controller < ActionController::Base
|
||||||
|
layout 'doorkeeper/application'
|
||||||
|
include LoginHelper
|
||||||
|
|
||||||
|
def show
|
||||||
|
client_id = params[:call_url].split("client_id=")[1].split("&redirect_uri")[0]
|
||||||
|
@call_url = request.fullpath.split('call_url=').last
|
||||||
|
@app = Doorkeeper::Application.find_by(uid: client_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
if params[:login].blank?
|
||||||
|
@error = {msg: '邮箱地址或用户名不能为空', id: 'login'}
|
||||||
|
elsif params[:password].blank?
|
||||||
|
@error = {msg: '请输入密码', id: 'password'}
|
||||||
|
else
|
||||||
|
@user = User.try_to_login(params[:login], params[:password])
|
||||||
|
|
||||||
|
return @error = {msg: '账号或密码错误', id: 'login'} if @user.blank?
|
||||||
|
return @error = {msg: '违反平台使用规范,账号已被锁定', id: 'login'} if @user.locked?
|
||||||
|
|
||||||
|
login_control = LimitForbidControl::UserLogin.new(@user)
|
||||||
|
return @error = {msg: "登录密码出错已达上限,账号已被锁定, 请#{login_control.forbid_expires/60}分钟后重新登录或找回密码", id: 'account'} if login_control.forbid?
|
||||||
|
|
||||||
|
password_ok = @user.check_password?(params[:password].to_s)
|
||||||
|
unless password_ok
|
||||||
|
if login_control.remain_times-1 == 0
|
||||||
|
@error = {msg: "登录密码出错已达上限,账号已被锁定, 请#{login_control.forbid_expires/60}分钟后重新登录或找回密码", id: 'account'}
|
||||||
|
else
|
||||||
|
@error = {msg: "你已经输错密码#{login_control.error_times+1}次,还剩余#{login_control.remain_times-1}次机会", id: 'account'}
|
||||||
|
end
|
||||||
|
login_control.increment!
|
||||||
|
return
|
||||||
|
end
|
||||||
|
login_control.clear
|
||||||
|
redirect_to params[:call_url] + "&auth=" + @user.login
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
<main role="main">
|
||||||
|
<p class="auth-desc">
|
||||||
|
申请使用<strong class="app-name"> GitLink </strong>账号登录
|
||||||
|
<strong class="app-name"><%= @app&.name %></strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="actions">
|
||||||
|
<div class="w">
|
||||||
|
<%= form_tag oauth2_path, method: :post, authenticity_token: true, remote: true, class: 'login-form' do %>
|
||||||
|
<%= hidden_field_tag :client_id, @app.uid %>
|
||||||
|
<%= hidden_field_tag :call_url, @call_url %>
|
||||||
|
<p id="account_error" class='error'></p>
|
||||||
|
<%= text_field_tag :login, '', placeholder: '请输入邮箱地址/用户名' %>
|
||||||
|
<p id="login_error" class='error'></p>
|
||||||
|
<%= password_field_tag :password, '', placeholder: '请输入密码'%>
|
||||||
|
<p id="password_error" class='error'></p>
|
||||||
|
<%= submit_tag '授权登录', class: "btn btn-login btn-lg btn-block mt-20" %>
|
||||||
|
<% end %>
|
||||||
|
<div class="reg">
|
||||||
|
<%= link_to "注 册", '/register', class: 'reg-link' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
|
@ -28,6 +28,9 @@ Rails.application.routes.draw do
|
||||||
get 'oauth/register', to: 'oauth#register'
|
get 'oauth/register', to: 'oauth#register'
|
||||||
post 'oauth/auto_register', to: 'oauth#auto_register'
|
post 'oauth/auto_register', to: 'oauth#auto_register'
|
||||||
|
|
||||||
|
get 'oauth2', to: 'oauth2#show'
|
||||||
|
post 'oauth2', to: 'oauth2#create'
|
||||||
|
|
||||||
resources :edu_settings
|
resources :edu_settings
|
||||||
|
|
||||||
scope '/api' do
|
scope '/api' do
|
||||||
|
|
Loading…
Reference in New Issue