profile.blade.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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') }}" method="post" enctype="multipart/form-data" autocomplete="off">
  99. @csrf
  100. <div class="form-group row">
  101. <label class="col-md-5 col-form-label" for="password">{{ trans('auth.password.original') }}</label>
  102. <input class="form-control col-md-6 round" id="password" name="password" type="password" autofocus required />
  103. </div>
  104. <div class="form-group row">
  105. <label class="col-md-5 col-form-label" for="new_password">{{ trans('auth.password.new') }}</label>
  106. <input class="form-control col-md-6 round" id="new_password" name="new_password" type="password" required />
  107. </div>
  108. <div class="form-actions">
  109. <button class="btn btn-info float-right" type="submit">{{ trans('common.submit') }}</button>
  110. </div>
  111. </form>
  112. </div>
  113. <div class="tab-pane animation-slide-left" id="contact" role="tabpanel">
  114. <form class="form-horizontal" action="{{ route('profile') }}" method="post" enctype="multipart/form-data">
  115. @csrf
  116. <div class="form-group row">
  117. <label class="col-md-5 col-form-label" for="nickname">{{ trans('model.user.nickname') }}</label>
  118. <input class="form-control col-md-6 round" id="nickname" name="nickname" type="text"
  119. value="{{ Auth::getUser()->nickname }}" />
  120. </div>
  121. <div class="form-group row">
  122. <label class="col-md-5 col-form-label" for="wechat">{{ trans('model.user.wechat') }}</label>
  123. <input class="form-control col-md-6 round" id="wechat" name="wechat" type="text"
  124. value="{{ Auth::getUser()->wechat }}" />
  125. </div>
  126. <div class="form-group row">
  127. <label class="col-md-5 col-form-label" for="qq">{{ trans('model.user.qq') }}</label>
  128. <input class="form-control col-md-6 round" id="qq" name="qq" type="number"
  129. value="{{ Auth::getUser()->qq }}" />
  130. </div>
  131. <div class="form-actions">
  132. <button class="btn btn-info float-right" type="submit">{{ trans('common.submit') }}</button>
  133. </div>
  134. </form>
  135. </div>
  136. <div class="tab-pane animation-slide-left" id="proxy" role="tabpanel">
  137. <form class="form-horizontal" action="{{ route('profile') }}" method="post" enctype="multipart/form-data">
  138. @csrf
  139. <div class="form-group row">
  140. <label class="col-md-5 col-form-label" for="passwd"> {{ trans('user.account.connect_password') }} </label>
  141. <input class="form-control col-md-5 round" id="passwd" name="passwd" type="text"
  142. value="{{ Auth::getUser()->passwd }}" required />
  143. </div>
  144. <div class="form-actions">
  145. <button class="btn btn-info float-right" type="submit"> {{ trans('common.submit') }} </button>
  146. </div>
  147. </form>
  148. </div>
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. @endsection
  156. @section('javascript')
  157. <script src="/assets/custom/jump-tab.js"></script>
  158. @endsection