profile.blade.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. @extends('user.layouts')
  2. @section('css')
  3. <link href="/assets/global/fonts/font-awesome/css/all.min.css" rel="stylesheet">
  4. <style>
  5. .line {
  6. height: 1px;
  7. border-top: 1px solid #ddd;
  8. text-align: center;
  9. padding-bottom: 15px;
  10. }
  11. .line span {
  12. position: relative;
  13. top: -8px;
  14. background: #fff;
  15. padding: 0 20px;
  16. }
  17. </style>
  18. @endsection
  19. @section('content')
  20. <div class="page-content container">
  21. <div class="row">
  22. <div class="col-lg-5">
  23. <div class="user-info card card-shadow text-center">
  24. <div class="user-base card-block">
  25. <a class="avatar img-bordered avatar-100" href="javascript:void(0)">
  26. <img data-uid="{{ Auth::getUser()->id }}" data-qq="{{ Auth::getUser()->qq }}" data-username="{{ Auth::getUser()->username }}"
  27. src="" alt="{{ trans('common.avatar') }}" loading="lazy" />
  28. </a>
  29. <h4 class="user-name">{{ Auth::getUser()->nickname }}</h4>
  30. <p class="user-job">
  31. <i class="fa-brands fa-weixin fa-lg mr-10" aria-hidden="true"></i>
  32. {{ trans('model.user.wechat') }}: {{ Auth::getUser()->wechat ?? trans('common.none') }}
  33. </p>
  34. <p class="user-location"><i class="fa-brands fa-qq fa-lg mr-10" aria-hidden="true"></i> QQ:
  35. @if (Auth::getUser()->qq)
  36. {{ Auth::getUser()->qq }}
  37. @else
  38. {{ trans('common.none') }}
  39. @endif
  40. </p>
  41. </div>
  42. @if (sysConfig('oauth_path'))
  43. <div class="line">
  44. <span> {{ trans('user.oauth.bind_title') }} </span>
  45. </div>
  46. <div class="user-socials list-group-gap list-group-full row m-0">
  47. @foreach (json_decode(sysConfig('oauth_path'), false) as $provider)
  48. <a class="list-group-item offset-lg-1 col-lg-8 col-10 d-flex justify-content-around align-items-center"
  49. @if ($provider !== 'telegram') href="{{ route('oauth.route', ['provider' => $provider, 'operation' => 'bind']) }}" @endif>
  50. <span>
  51. <i class="fa-brands {{ config('common.oauth.icon')[$provider] }} fa-lg mr-2" aria-hidden="true"></i>
  52. {{ config('common.oauth.labels')[$provider] }}:
  53. </span>
  54. <span>
  55. @if (in_array($provider, $auth, true))
  56. <span class="text-danger">{{ trans('user.oauth.rebind') }}</span>
  57. @else
  58. <span class="text-muted">{{ trans('user.oauth.not_bind') }}</span>
  59. @endif
  60. @if ($provider === 'telegram')
  61. <script async src="https://telegram.org/js/telegram-widget.js?22" data-telegram-login="{{ config('services.telegram.bot') }}" data-size="medium"
  62. data-userpic="false" data-auth-url="{{ route('oauth.bind', ['provider' => $provider]) }}" data-request-access="write"></script>
  63. @endif
  64. </span>
  65. </a>
  66. @if (in_array($provider, $auth, true))
  67. <a class="col-2 btn btn-danger btn-block my-auto"
  68. href="{{ route('oauth.unbind', ['provider' => $provider]) }}">{{ trans('user.oauth.unbind') }}</a>
  69. @endif
  70. @endforeach
  71. </div>
  72. @endif
  73. </div>
  74. </div>
  75. <div class="col-lg-7">
  76. <div class="panel">
  77. @if (Session::has('successMsg'))
  78. <x-alert type="success" :message="Session::pull('successMsg')" />
  79. @endif
  80. @if ($errors->any())
  81. <x-alert type="danger" :message="$errors->all()" />
  82. @endif
  83. <div class="panel-body nav-tabs-animate nav-tabs-horizontal" data-plugin="tabs">
  84. <ul class="nav nav-tabs nav-tabs-line" role="tablist">
  85. <li class="nav-item" role="presentation">
  86. <a class="active nav-link" data-toggle="tab" href="#account" role="tab"
  87. aria-controls="account">{{ ucfirst(trans('validation.attributes.password')) }}</a>
  88. </li>
  89. <li class="nav-item" role="presentation">
  90. <a class="nav-link" data-toggle="tab" href="#contact" role="tab" aria-controls="contact">{{ trans('user.contact') }}</a>
  91. </li>
  92. <li class="nav-item" role="presentation">
  93. <a class="nav-link" data-toggle="tab" href="#proxy" role="tab" aria-controls="proxy">{{ trans('user.node.setting') }}</a>
  94. </li>
  95. </ul>
  96. <div class="tab-content py-10">
  97. <div class="tab-pane active animation-slide-left" id="account" role="tabpanel">
  98. <form class="form-horizontal" action="{{ route('profile.update') }}" method="post" enctype="multipart/form-data"
  99. autocomplete="off">
  100. @csrf
  101. <div class="form-group row">
  102. <label class="col-md-5 col-form-label" for="password">{{ trans('auth.password.original') }}</label>
  103. <input class="form-control col-md-6 round" id="password" name="password" type="password" autofocus required />
  104. </div>
  105. <div class="form-group row">
  106. <label class="col-md-5 col-form-label" for="new_password">{{ trans('auth.password.new') }}</label>
  107. <input class="form-control col-md-6 round" id="new_password" name="new_password" type="password" required />
  108. </div>
  109. <div class="form-actions">
  110. <button class="btn btn-info float-right" type="submit">{{ trans('common.submit') }}</button>
  111. </div>
  112. </form>
  113. </div>
  114. <div class="tab-pane animation-slide-left" id="contact" role="tabpanel">
  115. <form class="form-horizontal" action="{{ route('profile.update') }}" method="post" enctype="multipart/form-data">
  116. @csrf
  117. <div class="form-group row">
  118. <label class="col-md-5 col-form-label" for="nickname">{{ trans('model.user.nickname') }}</label>
  119. <input class="form-control col-md-6 round" id="nickname" name="nickname" type="text"
  120. value="{{ Auth::getUser()->nickname }}" />
  121. </div>
  122. <div class="form-group row">
  123. <label class="col-md-5 col-form-label" for="wechat">{{ trans('model.user.wechat') }}</label>
  124. <input class="form-control col-md-6 round" id="wechat" name="wechat" type="text"
  125. value="{{ Auth::getUser()->wechat }}" />
  126. </div>
  127. <div class="form-group row">
  128. <label class="col-md-5 col-form-label" for="qq">{{ trans('model.user.qq') }}</label>
  129. <input class="form-control col-md-6 round" id="qq" name="qq" type="number"
  130. value="{{ Auth::getUser()->qq }}" />
  131. </div>
  132. <div class="form-actions">
  133. <button class="btn btn-info float-right" type="submit">{{ trans('common.submit') }}</button>
  134. </div>
  135. </form>
  136. </div>
  137. <div class="tab-pane animation-slide-left" id="proxy" role="tabpanel">
  138. <form class="form-horizontal" action="{{ route('profile.update') }}" method="post" enctype="multipart/form-data">
  139. @csrf
  140. <div class="form-group row">
  141. <label class="col-md-5 col-form-label" for="passwd"> {{ trans('user.account.connect_password') }} </label>
  142. <input class="form-control col-md-5 round" id="passwd" name="passwd" type="text"
  143. value="{{ Auth::getUser()->passwd }}" required />
  144. </div>
  145. <div class="form-actions">
  146. <button class="btn btn-info float-right" type="submit"> {{ trans('common.submit') }} </button>
  147. </div>
  148. </form>
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. </div>
  156. @endsection
  157. @section('javascript')
  158. <script src="/assets/custom/jump-tab.js"></script>
  159. @endsection