diff --git a/app/views/doorkeeper/applications/_delete_form.html.erb b/app/views/doorkeeper/applications/_delete_form.html.erb
new file mode 100644
index 000000000..654fb2a65
--- /dev/null
+++ b/app/views/doorkeeper/applications/_delete_form.html.erb
@@ -0,0 +1,6 @@
+<%- submit_btn_css ||= 'btn btn-link' %>
+<%= form_tag oauth_application_path(application), method: :delete do %>
+ <%= submit_tag t('doorkeeper.applications.buttons.destroy'),
+ onclick: "return confirm('#{ t('doorkeeper.applications.confirmations.destroy') }')",
+ class: submit_btn_css %>
+<% end %>
diff --git a/app/views/doorkeeper/applications/_form.html.erb b/app/views/doorkeeper/applications/_form.html.erb
new file mode 100644
index 000000000..9935b711b
--- /dev/null
+++ b/app/views/doorkeeper/applications/_form.html.erb
@@ -0,0 +1,65 @@
+<%= form_for application, url: doorkeeper_submit_path(application), html: { role: 'form' } do |f| %>
+ <% if application.errors.any? %>
+
<%= t('doorkeeper.applications.form.error') %>
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+<% end %>
diff --git a/app/views/doorkeeper/applications/edit.html.erb b/app/views/doorkeeper/applications/edit.html.erb
new file mode 100644
index 000000000..737186bc5
--- /dev/null
+++ b/app/views/doorkeeper/applications/edit.html.erb
@@ -0,0 +1,5 @@
+
+
<%= t('.title') %>
+
+
+<%= render 'form', application: @application %>
diff --git a/app/views/doorkeeper/applications/index.html.erb b/app/views/doorkeeper/applications/index.html.erb
new file mode 100644
index 000000000..3ba2650d4
--- /dev/null
+++ b/app/views/doorkeeper/applications/index.html.erb
@@ -0,0 +1,38 @@
+
+
<%= t('.title') %>
+
+
+<%= link_to t('.new'), new_oauth_application_path, class: 'btn btn-success' %>
+
+
+
+
+ | <%= t('.name') %> |
+ <%= t('.callback_url') %> |
+ <%= t('.confidential') %> |
+ <%= t('.actions') %> |
+ |
+
+
+
+ <% @applications.each do |application| %>
+
+ |
+ <%= link_to application.name, oauth_application_path(application) %>
+ |
+
+ <%= simple_format(application.redirect_uri) %>
+ |
+
+ <%= application.confidential? ? t('doorkeeper.applications.index.confidentiality.yes') : t('doorkeeper.applications.index.confidentiality.no') %>
+ |
+
+ <%= link_to t('doorkeeper.applications.buttons.edit'), edit_oauth_application_path(application), class: 'btn btn-link' %>
+ |
+
+ <%= render 'delete_form', application: application %>
+ |
+
+ <% end %>
+
+
diff --git a/app/views/doorkeeper/applications/new.html.erb b/app/views/doorkeeper/applications/new.html.erb
new file mode 100644
index 000000000..737186bc5
--- /dev/null
+++ b/app/views/doorkeeper/applications/new.html.erb
@@ -0,0 +1,5 @@
+
+
<%= t('.title') %>
+
+
+<%= render 'form', application: @application %>
diff --git a/app/views/doorkeeper/applications/show.html.erb b/app/views/doorkeeper/applications/show.html.erb
new file mode 100644
index 000000000..b68f9fcb9
--- /dev/null
+++ b/app/views/doorkeeper/applications/show.html.erb
@@ -0,0 +1,42 @@
+
+
<%= t('.title', name: @application.name) %>
+
+
+
+
+
<%= t('.application_id') %>:
+
<%= @application.uid %>
+
+
<%= t('.secret') %>:
+
<%= @application.plaintext_secret %>
+
+
<%= t('.scopes') %>:
+
<%= @application.scopes.presence || raw(' ') %>
+
+
<%= t('.confidential') %>:
+
<%= @application.confidential? %>
+
+
<%= t('.callback_urls') %>:
+
+
+ <% @application.redirect_uri.split.each do |uri| %>
+
+
+ <%= uri %>
+ |
+
+ <%= link_to t('doorkeeper.applications.buttons.authorize'), oauth_authorization_path(client_id: @application.uid, redirect_uri: uri, response_type: 'code', scope: @application.scopes), class: 'btn btn-success', target: '_blank' %>
+ |
+
+ <% end %>
+
+
+
+
+
<%= t('.actions') %>
+
+
<%= link_to t('doorkeeper.applications.buttons.edit'), edit_oauth_application_path(@application), class: 'btn btn-primary' %>
+
+
<%= render 'delete_form', application: @application, submit_btn_css: 'btn btn-danger' %>
+
+
diff --git a/app/views/doorkeeper/authorizations/error.html.erb b/app/views/doorkeeper/authorizations/error.html.erb
new file mode 100644
index 000000000..41b47b455
--- /dev/null
+++ b/app/views/doorkeeper/authorizations/error.html.erb
@@ -0,0 +1,7 @@
+
+
<%= t('doorkeeper.authorizations.error.title') %>
+
+
+
+ <%= @pre_auth.error_response.body[:error_description] %>
+
diff --git a/app/views/doorkeeper/authorizations/new.html.erb b/app/views/doorkeeper/authorizations/new.html.erb
new file mode 100644
index 000000000..106c48aa6
--- /dev/null
+++ b/app/views/doorkeeper/authorizations/new.html.erb
@@ -0,0 +1,44 @@
+
+
+
+
+ <%= raw t('.prompt', client_name: content_tag(:strong, class: 'text-info') { @pre_auth.client.name }) %>
+
+
+ <% if @pre_auth.scopes.count > 0 %>
+
+
<%= t('.able_to') %>:
+
+
+ <% @pre_auth.scopes.each do |scope| %>
+ - <%= t scope, scope: [:doorkeeper, :scopes] %>
+ <% end %>
+
+
+ <% end %>
+
+
+ <%= form_tag oauth_authorization_path, method: :post do %>
+ <%= hidden_field_tag :client_id, @pre_auth.client.uid %>
+ <%= hidden_field_tag :redirect_uri, @pre_auth.redirect_uri %>
+ <%= hidden_field_tag :state, @pre_auth.state %>
+ <%= hidden_field_tag :response_type, @pre_auth.response_type %>
+ <%= hidden_field_tag :scope, @pre_auth.scope %>
+ <%= hidden_field_tag :code_challenge, @pre_auth.code_challenge %>
+ <%= hidden_field_tag :code_challenge_method, @pre_auth.code_challenge_method %>
+ <%= submit_tag t('doorkeeper.authorizations.buttons.authorize'), class: "btn btn-success btn-lg btn-block" %>
+ <% end %>
+ <%= form_tag oauth_authorization_path, method: :delete do %>
+ <%= hidden_field_tag :client_id, @pre_auth.client.uid %>
+ <%= hidden_field_tag :redirect_uri, @pre_auth.redirect_uri %>
+ <%= hidden_field_tag :state, @pre_auth.state %>
+ <%= hidden_field_tag :response_type, @pre_auth.response_type %>
+ <%= hidden_field_tag :scope, @pre_auth.scope %>
+ <%= hidden_field_tag :code_challenge, @pre_auth.code_challenge %>
+ <%= hidden_field_tag :code_challenge_method, @pre_auth.code_challenge_method %>
+ <%= submit_tag t('doorkeeper.authorizations.buttons.deny'), class: "btn btn-danger btn-lg btn-block" %>
+ <% end %>
+
+
diff --git a/app/views/doorkeeper/authorizations/show.html.erb b/app/views/doorkeeper/authorizations/show.html.erb
new file mode 100644
index 000000000..f4d661019
--- /dev/null
+++ b/app/views/doorkeeper/authorizations/show.html.erb
@@ -0,0 +1,7 @@
+
+
+
+ <%= params[:code] %>
+
diff --git a/app/views/doorkeeper/authorized_applications/_delete_form.html.erb b/app/views/doorkeeper/authorized_applications/_delete_form.html.erb
new file mode 100644
index 000000000..512e8ece3
--- /dev/null
+++ b/app/views/doorkeeper/authorized_applications/_delete_form.html.erb
@@ -0,0 +1,4 @@
+<%- submit_btn_css ||= 'btn btn-link' %>
+<%= form_tag oauth_authorized_application_path(application), method: :delete do %>
+ <%= submit_tag t('doorkeeper.authorized_applications.buttons.revoke'), onclick: "return confirm('#{ t('doorkeeper.authorized_applications.confirmations.revoke') }')", class: submit_btn_css %>
+<% end %>
diff --git a/app/views/doorkeeper/authorized_applications/index.html.erb b/app/views/doorkeeper/authorized_applications/index.html.erb
new file mode 100644
index 000000000..a3f5aaac3
--- /dev/null
+++ b/app/views/doorkeeper/authorized_applications/index.html.erb
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+ | <%= t('doorkeeper.authorized_applications.index.application') %> |
+ <%= t('doorkeeper.authorized_applications.index.created_at') %> |
+ |
+
+
+
+ <% @applications.each do |application| %>
+
+ | <%= application.name %> |
+ <%= application.created_at.strftime(t('doorkeeper.authorized_applications.index.date_format')) %> |
+ <%= render 'delete_form', application: application %> |
+
+ <% end %>
+
+
+
diff --git a/app/views/layouts/doorkeeper/admin.html.erb b/app/views/layouts/doorkeeper/admin.html.erb
new file mode 100644
index 000000000..3d1aeadec
--- /dev/null
+++ b/app/views/layouts/doorkeeper/admin.html.erb
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ <%= t('doorkeeper.layouts.admin.title') %>
+ <%= stylesheet_link_tag "doorkeeper/admin/application" %>
+ <%= csrf_meta_tags %>
+
+
+
+
+
+ <%- if flash[:notice].present? %>
+
+ <%= flash[:notice] %>
+
+ <% end -%>
+
+ <%= yield %>
+
+
+
diff --git a/app/views/layouts/doorkeeper/application.html.erb b/app/views/layouts/doorkeeper/application.html.erb
new file mode 100644
index 000000000..562005af0
--- /dev/null
+++ b/app/views/layouts/doorkeeper/application.html.erb
@@ -0,0 +1,23 @@
+
+
+
+ <%= t('doorkeeper.layouts.application.title') %>
+
+
+
+
+ <%= stylesheet_link_tag "doorkeeper/application" %>
+ <%= csrf_meta_tags %>
+
+
+
+ <%- if flash[:notice].present? %>
+
+ <%= flash[:notice] %>
+
+ <% end -%>
+
+ <%= yield %>
+
+
+