Browse Source

Add unsubscribe into OAuth Action

兔姬桑 4 years ago
parent
commit
9f53f2ae32

+ 10 - 0
app/Http/Controllers/OAuth/BaseController.php

@@ -77,6 +77,16 @@ class BaseController extends Controller
         return redirect()->route('login')->withErrors(trans('auth.error.not_found_user'));
     }
 
+    public function unsubscribe(string $type)
+    {
+        $user = Auth::user();
+        if ($user && $user->userAuths()->whereType($type)->delete()) {
+            return redirect()->route('profile')->with('successMsg', '解绑成功');
+        }
+
+        return redirect()->route('profile')->with('successMsg', '解绑失败');
+    }
+
     public function binding($type)
     {
         $info = Socialite::driver($type)->stateless()->user();

+ 2 - 2
config/common.php

@@ -28,9 +28,9 @@ return [
 
     'oauth' => [
         'labels' => [
-            'facebook'  => 'FaceBook',
+            'facebook'  => 'Facebook',
             'twitter'   => 'Twitter',
-            'linkedin'  => 'Linkedin',
+            'linkedin'  => 'LinkedIn',
             'google'    => 'Google',
             'github'    => 'GitHub',
             'gitlab'    => 'GitLab',

+ 5 - 2
resources/views/user/profile.blade.php

@@ -36,9 +36,9 @@
                         <div class="line">
                             <span> 绑定社交账号 </span>
                         </div>
-                        <div class="user-socials list-group-gap list-group-full">
+                        <div class="user-socials list-group-gap list-group-full row m-0">
                             @foreach (json_decode(sysConfig('oauth_path')) as $item)
-                                <a class="list-group-item justify-content-center"
+                                <a class="list-group-item justify-content-center @if(in_array($item, $auth)) col-10 @else col-12 @endif"
                                    @if($item !== 'telegram') href="{{route('oauth.route', ['type' => $item, 'action' => 'binding'])}}" @endif>
                                     <i class="fab {{config('common.oauth.icon')[$item]}} fa-lg mr-10" aria-hidden="true"></i> {{config('common.oauth.labels')[$item]}} :
                                     @if(in_array($item, $auth))
@@ -50,6 +50,9 @@
                                         {!! Socialite::driver('telegram')->getButton() !!}
                                     @endif
                                 </a>
+                                @if(in_array($item, $auth))
+                                    <a class="col-2 btn btn-block btn-danger my-auto" href="{{route('oauth.unsubscribe', ['type' => $item])}}">解绑</a>
+                                @endif
                             @endforeach
                         </div>
                     @endif

+ 1 - 0
routes/web.php

@@ -21,6 +21,7 @@ Route::middleware(['isForbidden', 'affiliate', 'isMaintenance'])->group(function
         Route::get('{type}/bind', 'BaseController@binding')->name('bind');
         Route::get('{type}/register', 'BaseController@register')->name('register');
         Route::get('{type}/redirect', 'BaseController@simple')->name('simple');
+        Route::get('{type}/unsubscribe', 'BaseController@unsubscribe')->name('unsubscribe');
         Route::get('{type}/{action}', 'BaseController@route')->name('route');
     });