4
0
Эх сурвалжийг харах

Use HTTP POST for logout (#7489)

* Use HTTP POST for logout
To avoid potential CSRF risks

* Fixed button font issue

* Minor whitespace
Alexandre Alapetite 1 жил өмнө
parent
commit
d858053a7c

+ 7 - 3
app/Controllers/authController.php

@@ -223,9 +223,13 @@ class FreshRSS_auth_Controller extends FreshRSS_ActionController {
 	 * This action removes all accesses of the current user.
 	 */
 	public function logoutAction(): void {
-		invalidateHttpCache();
-		FreshRSS_Auth::removeAccess();
-		Minz_Request::good(_t('feedback.auth.logout.success'), [ 'c' => 'index', 'a' => 'index' ]);
+		if (Minz_Request::isPost()) {
+			invalidateHttpCache();
+			FreshRSS_Auth::removeAccess();
+			Minz_Request::good(_t('feedback.auth.logout.success'), [ 'c' => 'index', 'a' => 'index' ]);
+		} else {
+			Minz_Error::error(403);
+		}
 	}
 
 	/**

+ 5 - 3
app/layout/aside_configure.phtml

@@ -2,6 +2,9 @@
 	declare(strict_types=1);
 ?>
 <nav class="nav nav-list aside" id="aside_feed">
+	<form id="post-csrf" method="post">
+		<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
+	</form>
 	<a class="toggle_aside" href="#close"><?= _i('close') ?></a>
 
 	<ul>
@@ -19,9 +22,8 @@
 					<a href="<?= _url('user', 'profile') ?>"><?= _t('gen.menu.user_profile') ?></a>
 				</li>
 				<li class="item">
-					<a class="signout" href="<?= FreshRSS_auth_Controller::getLogoutUrl() ?>">
-						<?php
-						echo _t('gen.auth.logout'); ?> <?= _i('logout') ?></a>
+					<button class="as-link signout" form="post-csrf" formaction="<?=
+						FreshRSS_auth_Controller::getLogoutUrl() ?>"><?= _t('gen.auth.logout'); ?><?= _i('logout') ?></button>
 				</li>
 			</ul>
 		</li>

+ 6 - 1
app/layout/header.phtml

@@ -50,6 +50,9 @@
 
 	<?php if (FreshRSS_Auth::hasAccess()) { ?>
 	<nav class="item configure">
+		<form id="post-csrf" method="post">
+			<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
+		</form>
 		<div class="dropdown">
 			<div id="dropdown-configure" class="dropdown-target"></div>
 			<a class="btn dropdown-toggle" href="#dropdown-configure"><?= _i('configure') ?></a>
@@ -63,7 +66,9 @@
 					<ul>
 						<li class="item"><a href="<?= _url('user', 'profile') ?>"><?= _t('gen.menu.user_profile') ?></a></li>
 						<?php if (FreshRSS_Auth::accessNeedsAction()): ?>
-						<li class="item"><a class="signout" href="<?= _url('auth', 'logout') ?>"><?= _t('gen.auth.logout'); ?><?= _i('logout') ?></a></li>
+						<li class="item">
+							<button class="as-link signout" form="post-csrf" formaction="<?= _url('auth', 'logout') ?>"><?= _t('gen.auth.logout'); ?><?= _i('logout') ?></button>
+						</li>
 						<?php else: ?>
 						<li class="item"><span class="signout">(<?= htmlspecialchars(Minz_User::name() ?? '', ENT_NOQUOTES, 'UTF-8') ?>)</span></li>
 						<?php endif; ?>

+ 6 - 4
app/layout/simple.phtml

@@ -60,13 +60,15 @@
 
 		<div class="item"></div>
 
+		<form id="post-csrf" method="post">
+			<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
+		</form>
+
 		<?php if (FreshRSS_Auth::accessNeedsAction()): ?>
 			<div class="item configure">
 			<?php if (FreshRSS_Auth::hasAccess()): ?>
-				<a class="signout" href="<?= Minz_Url::display(['c' => 'auth', 'a' => 'logout'], 'html', 'root') ?>">
-					<?= _i('logout') ?><?= _t('gen.auth.logout') ?>
-					(<?= htmlspecialchars(Minz_User::name() ?? '', ENT_NOQUOTES, 'UTF-8') ?>)
-				</a>
+				<button class="as-link signout" form="post-csrf" formaction="<?=
+					_url('auth', 'logout') ?>"><?= _t('gen.auth.logout'); ?><?= _i('logout') ?></button>
 			<?php else: ?>
 				<a class="signin" href="<?= Minz_Url::display(['c' => 'auth', 'a' => 'login'], 'html', 'root') ?>">
 					<?= _i('login') ?><?= _t('gen.auth.login') ?>

+ 4 - 2
p/themes/Ansum/_sidebar.scss

@@ -185,14 +185,16 @@
 			line-height: 2.5em;
 		}
 
-		a {
+		a,
+		.as-link {
 			padding: 0 1rem;
 			color: variables.$sid-font-color;
 
 			@include mixins.transition(all, 0.15s, ease-in-out);
 		}
 
-		a:hover {
+		a:hover,
+		.as-link:hover {
 			background: variables.$sid-bg-dark;
 			text-decoration: none;
 		}

+ 18 - 14
p/themes/Ansum/ansum.css

@@ -599,12 +599,14 @@ th {
 	min-height: 2.5em;
 	line-height: 2.5em;
 }
-.nav-list .item a {
+.nav-list .item a,
+.nav-list .item .as-link {
 	padding: 0 1rem;
 	color: #363330;
 	transition: all 0.15s ease-in-out;
 }
-.nav-list .item a:hover {
+.nav-list .item a:hover,
+.nav-list .item .as-link:hover {
 	background: #efe3d3;
 	text-decoration: none;
 }
@@ -1210,21 +1212,21 @@ main.prompt {
 		padding: 0.5rem 1rem;
 	}
 	.aside .toggle_aside,
-#overlay .close,
-.dropdown-menu .toggle_aside,
-#slider .toggle_aside {
+	#overlay .close,
+	.dropdown-menu .toggle_aside,
+	#slider .toggle_aside {
 		background-color: #ca7227;
 	}
 	.aside .toggle_aside:hover,
-#overlay .close:hover,
-.dropdown-menu .toggle_aside:hover,
-#slider .toggle_aside:hover {
+	#overlay .close:hover,
+	.dropdown-menu .toggle_aside:hover,
+	#slider .toggle_aside:hover {
 		background-color: #b7641d;
 	}
 	.aside .toggle_aside .icon,
-#overlay .close .icon,
-.dropdown-menu .toggle_aside .icon,
-#slider .toggle_aside .icon {
+	#overlay .close .icon,
+	.dropdown-menu .toggle_aside .icon,
+	#slider .toggle_aside .icon {
 		filter: grayscale(100%) brightness(2.5);
 	}
 	.header .item.search {
@@ -1253,16 +1255,16 @@ main.prompt {
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .stick,
-.nav_menu .group {
+	.nav_menu .group {
 		margin: 0.5rem 0.5rem;
 	}
 	.nav_menu .stick .btn,
-.nav_menu .group .btn {
+	.nav_menu .group .btn {
 		margin: 0;
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .stick .btn.read_all,
-.nav_menu .group .btn.read_all {
+	.nav_menu .group .btn.read_all {
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .search .input {
@@ -1333,3 +1335,5 @@ a, button.as-link {
 	outline: none;
 	color: #ca7227;
 }
+
+/*# sourceMappingURL=ansum.css.map */

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
p/themes/Ansum/ansum.css.map


+ 16 - 14
p/themes/Ansum/ansum.rtl.css

@@ -599,12 +599,14 @@ th {
 	min-height: 2.5em;
 	line-height: 2.5em;
 }
-.nav-list .item a {
+.nav-list .item a,
+.nav-list .item .as-link {
 	padding: 0 1rem;
 	color: #363330;
 	transition: all 0.15s ease-in-out;
 }
-.nav-list .item a:hover {
+.nav-list .item a:hover,
+.nav-list .item .as-link:hover {
 	background: #efe3d3;
 	text-decoration: none;
 }
@@ -1210,21 +1212,21 @@ main.prompt {
 		padding: 0.5rem 1rem;
 	}
 	.aside .toggle_aside,
-#overlay .close,
-.dropdown-menu .toggle_aside,
-#slider .toggle_aside {
+	#overlay .close,
+	.dropdown-menu .toggle_aside,
+	#slider .toggle_aside {
 		background-color: #ca7227;
 	}
 	.aside .toggle_aside:hover,
-#overlay .close:hover,
-.dropdown-menu .toggle_aside:hover,
-#slider .toggle_aside:hover {
+	#overlay .close:hover,
+	.dropdown-menu .toggle_aside:hover,
+	#slider .toggle_aside:hover {
 		background-color: #b7641d;
 	}
 	.aside .toggle_aside .icon,
-#overlay .close .icon,
-.dropdown-menu .toggle_aside .icon,
-#slider .toggle_aside .icon {
+	#overlay .close .icon,
+	.dropdown-menu .toggle_aside .icon,
+	#slider .toggle_aside .icon {
 		filter: grayscale(100%) brightness(2.5);
 	}
 	.header .item.search {
@@ -1253,16 +1255,16 @@ main.prompt {
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .stick,
-.nav_menu .group {
+	.nav_menu .group {
 		margin: 0.5rem 0.5rem;
 	}
 	.nav_menu .stick .btn,
-.nav_menu .group .btn {
+	.nav_menu .group .btn {
 		margin: 0;
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .stick .btn.read_all,
-.nav_menu .group .btn.read_all {
+	.nav_menu .group .btn.read_all {
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .search .input {

+ 2 - 1
p/themes/Flat/flat.css

@@ -266,7 +266,8 @@ th {
 	color: #fff;
 }
 
-.nav-list .item > a {
+.nav-list .item > a,
+.nav-list .item > .as-link {
 	padding: 0 1rem;
 }
 

+ 2 - 1
p/themes/Flat/flat.rtl.css

@@ -266,7 +266,8 @@ th {
 	color: #fff;
 }
 
-.nav-list .item > a {
+.nav-list .item > a,
+.nav-list .item > .as-link {
 	padding: 0 1rem;
 }
 

+ 2 - 2
p/themes/Mapco/_sidebar.scss

@@ -184,14 +184,14 @@
 			line-height: 2.5em;
 		}
 
-		a {
+		a, .as-link {
 			padding: 0 1rem;
 			color: variables.$sid-font-color;
 
 			@include mixins.transition(all, 0.15s, ease-in-out);
 		}
 
-		a:hover {
+		a:hover, .as-link:hover {
 			background: variables.$sid-bg-dark;
 			text-decoration: none;
 		}

+ 16 - 14
p/themes/Mapco/mapco.css

@@ -613,12 +613,12 @@ th {
 	min-height: 2.5em;
 	line-height: 2.5em;
 }
-.nav-list .item a {
+.nav-list .item a, .nav-list .item .as-link {
 	padding: 0 1rem;
 	color: #ffffff;
 	transition: all 0.15s ease-in-out;
 }
-.nav-list .item a:hover {
+.nav-list .item a:hover, .nav-list .item .as-link:hover {
 	background: #17181a;
 	text-decoration: none;
 }
@@ -1225,21 +1225,21 @@ main.prompt {
 		padding: 0.5rem 1rem;
 	}
 	.aside .toggle_aside,
-#overlay .close,
-.dropdown-menu .toggle_aside,
-#slider .toggle_aside {
+	#overlay .close,
+	.dropdown-menu .toggle_aside,
+	#slider .toggle_aside {
 		background-color: #36c;
 	}
 	.aside .toggle_aside:hover,
-#overlay .close:hover,
-.dropdown-menu .toggle_aside:hover,
-#slider .toggle_aside:hover {
+	#overlay .close:hover,
+	.dropdown-menu .toggle_aside:hover,
+	#slider .toggle_aside:hover {
 		background-color: #25c;
 	}
 	.aside .toggle_aside .icon,
-#overlay .close .icon,
-.dropdown-menu .toggle_aside .icon,
-#slider .toggle_aside .icon {
+	#overlay .close .icon,
+	.dropdown-menu .toggle_aside .icon,
+	#slider .toggle_aside .icon {
 		filter: grayscale(100%) brightness(2.5);
 	}
 	.header .item.search {
@@ -1273,16 +1273,16 @@ main.prompt {
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .stick,
-.nav_menu .group {
+	.nav_menu .group {
 		margin: 0.5rem 0.5rem;
 	}
 	.nav_menu .stick .btn,
-.nav_menu .group .btn {
+	.nav_menu .group .btn {
 		margin: 0;
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .stick .btn.read_all,
-.nav_menu .group .btn.read_all {
+	.nav_menu .group .btn.read_all {
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .search .input {
@@ -1353,3 +1353,5 @@ a, button.as-link {
 	outline: none;
 	color: #36c;
 }
+
+/*# sourceMappingURL=mapco.css.map */

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
p/themes/Mapco/mapco.css.map


+ 14 - 14
p/themes/Mapco/mapco.rtl.css

@@ -613,12 +613,12 @@ th {
 	min-height: 2.5em;
 	line-height: 2.5em;
 }
-.nav-list .item a {
+.nav-list .item a, .nav-list .item .as-link {
 	padding: 0 1rem;
 	color: #ffffff;
 	transition: all 0.15s ease-in-out;
 }
-.nav-list .item a:hover {
+.nav-list .item a:hover, .nav-list .item .as-link:hover {
 	background: #17181a;
 	text-decoration: none;
 }
@@ -1225,21 +1225,21 @@ main.prompt {
 		padding: 0.5rem 1rem;
 	}
 	.aside .toggle_aside,
-#overlay .close,
-.dropdown-menu .toggle_aside,
-#slider .toggle_aside {
+	#overlay .close,
+	.dropdown-menu .toggle_aside,
+	#slider .toggle_aside {
 		background-color: #36c;
 	}
 	.aside .toggle_aside:hover,
-#overlay .close:hover,
-.dropdown-menu .toggle_aside:hover,
-#slider .toggle_aside:hover {
+	#overlay .close:hover,
+	.dropdown-menu .toggle_aside:hover,
+	#slider .toggle_aside:hover {
 		background-color: #25c;
 	}
 	.aside .toggle_aside .icon,
-#overlay .close .icon,
-.dropdown-menu .toggle_aside .icon,
-#slider .toggle_aside .icon {
+	#overlay .close .icon,
+	.dropdown-menu .toggle_aside .icon,
+	#slider .toggle_aside .icon {
 		filter: grayscale(100%) brightness(2.5);
 	}
 	.header .item.search {
@@ -1273,16 +1273,16 @@ main.prompt {
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .stick,
-.nav_menu .group {
+	.nav_menu .group {
 		margin: 0.5rem 0.5rem;
 	}
 	.nav_menu .stick .btn,
-.nav_menu .group .btn {
+	.nav_menu .group .btn {
 		margin: 0;
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .stick .btn.read_all,
-.nav_menu .group .btn.read_all {
+	.nav_menu .group .btn.read_all {
 		padding: 0.85rem 1.25rem;
 	}
 	.nav_menu .search .input {

+ 2 - 1
p/themes/Nord/nord.css

@@ -1117,7 +1117,8 @@ optgroup::before {
 	line-height: 2.5;
 }
 
-.nav-list .item > a {
+.nav-list .item > a,
+.nav-list .item > .as-link {
 	padding: 0 1rem;
 }
 

+ 2 - 1
p/themes/Nord/nord.rtl.css

@@ -1117,7 +1117,8 @@ optgroup::before {
 	line-height: 2.5;
 }
 
-.nav-list .item > a {
+.nav-list .item > a,
+.nav-list .item > .as-link {
 	padding: 0 1rem;
 }
 

+ 1 - 0
p/themes/Origine/origine.css

@@ -389,6 +389,7 @@ a:hover .icon {
 }
 
 .nav-list .item > a,
+.nav-list .item > .as-link,
 .nav-list .item > span,
 .nav-list .item > div {
 	padding: 0 1rem;

+ 1 - 0
p/themes/Origine/origine.rtl.css

@@ -389,6 +389,7 @@ a:hover .icon {
 }
 
 .nav-list .item > a,
+.nav-list .item > .as-link,
 .nav-list .item > span,
 .nav-list .item > div {
 	padding: 0 1rem;

+ 2 - 1
p/themes/Pafat/pafat.css

@@ -317,7 +317,8 @@ th {
 	color: var(--font-color-white);
 }
 
-.nav-list .item > a {
+.nav-list .item > a,
+.nav-list .item > .as-link {
 	padding: 0 1rem;
 }
 

+ 2 - 1
p/themes/Pafat/pafat.rtl.css

@@ -317,7 +317,8 @@ th {
 	color: var(--font-color-white);
 }
 
-.nav-list .item > a {
+.nav-list .item > a,
+.nav-list .item > .as-link {
 	padding: 0 1rem;
 }
 

+ 28 - 24
p/themes/Swage/swage.css

@@ -2,30 +2,30 @@
 	--color-text-light: #fcfcfc;
 	--color-text-light-darker: #969696;
 	--color-text-dark: #181621;
-	--color-text-nav: #00488b;
+	--color-text-nav: rgb(0, 71.6947368421, 139);
 	--color-text-aside: #22303d;
 	--color-text-alert: #fa8052;
 	--color-text-good: #5eaabf;
 	--color-text-bad: #b0425b;
-	--color-text-bad-lighter: #c46178;
+	--color-text-bad-lighter: rgb(195.8181818182, 97.1818181818, 119.5991735537);
 	--color-text-shadow-light: #fcfcfc;
-	--color-box-shadow-light: #e3e3e3;
+	--color-box-shadow-light: rgb(226.5, 226.5, 226.5);
 	--color-border-light: #fcfcfc;
-	--color-border-light-darker: #e3e3e3;
+	--color-border-light-darker: rgb(226.5, 226.5, 226.5);
 	--color-border-grey: #e3e3e3;
-	--color-border-nav: #00488b;
+	--color-border-nav: rgb(0, 71.6947368421, 139);
 	--color-border-bad: #b0425b;
 	--color-background-light: #fcfcfc;
-	--color-background-light-darker: #e3e3e3;
+	--color-background-light-darker: rgb(226.5, 226.5, 226.5);
 	--color-background-light-darker-transparent: rgba(217, 217, 217, 0.7333333333);
 	--color-background-dark: #181621;
 	--color-background-nav: #0062be;
-	--color-background-nav-darker: #00488b;
+	--color-background-nav-darker: rgb(0, 71.6947368421, 139);
 	--color-background-aside: #22303d;
 	--color-background-alert: #fa8052;
-	--color-background-alert-darker: #f95c20;
+	--color-background-alert-darker: rgb(248.5674157303, 91.6123595506, 32.4325842697);
 	--color-background-good: #5eaabf;
-	--color-background-bad: #c46178;
+	--color-background-bad: rgb(195.8181818182, 97.1818181818, 119.5991735537);
 	--color-background-stared: #fff6da;
 	--color-background-unread: #fff3ed;
 	--color-background-hover: #fff;
@@ -260,7 +260,8 @@ form th {
 	color: var(--color-text-light);
 	cursor: default;
 }
-.nav-list .item a:hover {
+.nav-list .item a:hover,
+.nav-list .item .as-link:hover {
 	background-color: var(--color-background-nav-darker);
 	color: var(--color-text-light);
 }
@@ -271,7 +272,8 @@ form th {
 .nav-list .item.active a {
 	color: var(--color-text-light);
 }
-.nav-list .item > a {
+.nav-list .item > a,
+.nav-list .item > .as-link {
 	padding: 0 1.5rem;
 }
 .nav-list .item .icon {
@@ -934,7 +936,7 @@ a.signin {
 		display: none;
 	}
 	.flux .item.manage,
-.flux_header .item.website {
+	.flux_header .item.website {
 		width: 35px;
 		text-align: center;
 	}
@@ -981,11 +983,11 @@ a.signin {
 		margin: 0;
 	}
 	.nav_menu .stick,
-.nav_menu .group {
+	.nav_menu .group {
 		margin: 0;
 	}
 	.nav_menu .stick .btn,
-.nav_menu .group .btn {
+	.nav_menu .group .btn {
 		margin: 0;
 	}
 	.nav_menu .item.search {
@@ -1001,7 +1003,7 @@ a.signin {
 		width: 100%;
 	}
 	#overlay .close,
-.dropdown-menu .toggle_aside {
+	.dropdown-menu .toggle_aside {
 		background-color: var(--color-background-aside);
 		display: block;
 		height: 50px;
@@ -1010,11 +1012,11 @@ a.signin {
 		padding-right: 10px;
 	}
 	#overlay .close:hover,
-.dropdown-menu .toggle_aside:hover {
+	.dropdown-menu .toggle_aside:hover {
 		background-color: var(--color-background-nav);
 	}
 	.dropdown-target:target ~ .dropdown-toggle::after,
-.dropdown-target:target ~ .dropdown-toggle.btn::after {
+	.dropdown-target:target ~ .dropdown-toggle.btn::after {
 		display: none;
 	}
 	.share .dropdown-menu {
@@ -1053,10 +1055,10 @@ a.signin {
 		top: 0;
 	}
 	form#mark-read-menu,
-a#actualize,
-a#toggle-order,
-div#nav_menu_actions,
-div#nav_menu_views {
+	a#actualize,
+	a#toggle-order,
+	div#nav_menu_actions,
+	div#nav_menu_views {
 		position: absolute;
 	}
 	form#mark-read-menu {
@@ -1064,15 +1066,15 @@ div#nav_menu_views {
 		top: 0;
 	}
 	a#actualize,
-a#toggle-order {
+	a#toggle-order {
 		right: 0;
 	}
 	a#actualize {
 		top: 0;
 	}
 	a#toggle-order,
-div#nav_menu_actions,
-div#nav_menu_views {
+	div#nav_menu_actions,
+	div#nav_menu_views {
 		top: 36px;
 	}
 	div#nav_menu_actions {
@@ -1169,3 +1171,5 @@ button.as-link {
 #slider label {
 	min-height: initial;
 }
+
+/*# sourceMappingURL=swage.css.map */

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
p/themes/Swage/swage.css.map


+ 26 - 24
p/themes/Swage/swage.rtl.css

@@ -2,30 +2,30 @@
 	--color-text-light: #fcfcfc;
 	--color-text-light-darker: #969696;
 	--color-text-dark: #181621;
-	--color-text-nav: #00488b;
+	--color-text-nav: rgb(0, 71.6947368421, 139);
 	--color-text-aside: #22303d;
 	--color-text-alert: #fa8052;
 	--color-text-good: #5eaabf;
 	--color-text-bad: #b0425b;
-	--color-text-bad-lighter: #c46178;
+	--color-text-bad-lighter: rgb(195.8181818182, 97.1818181818, 119.5991735537);
 	--color-text-shadow-light: #fcfcfc;
-	--color-box-shadow-light: #e3e3e3;
+	--color-box-shadow-light: rgb(226.5, 226.5, 226.5);
 	--color-border-light: #fcfcfc;
-	--color-border-light-darker: #e3e3e3;
+	--color-border-light-darker: rgb(226.5, 226.5, 226.5);
 	--color-border-grey: #e3e3e3;
-	--color-border-nav: #00488b;
+	--color-border-nav: rgb(0, 71.6947368421, 139);
 	--color-border-bad: #b0425b;
 	--color-background-light: #fcfcfc;
-	--color-background-light-darker: #e3e3e3;
+	--color-background-light-darker: rgb(226.5, 226.5, 226.5);
 	--color-background-light-darker-transparent: rgba(217, 217, 217, 0.7333333333);
 	--color-background-dark: #181621;
 	--color-background-nav: #0062be;
-	--color-background-nav-darker: #00488b;
+	--color-background-nav-darker: rgb(0, 71.6947368421, 139);
 	--color-background-aside: #22303d;
 	--color-background-alert: #fa8052;
-	--color-background-alert-darker: #f95c20;
+	--color-background-alert-darker: rgb(248.5674157303, 91.6123595506, 32.4325842697);
 	--color-background-good: #5eaabf;
-	--color-background-bad: #c46178;
+	--color-background-bad: rgb(195.8181818182, 97.1818181818, 119.5991735537);
 	--color-background-stared: #fff6da;
 	--color-background-unread: #fff3ed;
 	--color-background-hover: #fff;
@@ -260,7 +260,8 @@ form th {
 	color: var(--color-text-light);
 	cursor: default;
 }
-.nav-list .item a:hover {
+.nav-list .item a:hover,
+.nav-list .item .as-link:hover {
 	background-color: var(--color-background-nav-darker);
 	color: var(--color-text-light);
 }
@@ -271,7 +272,8 @@ form th {
 .nav-list .item.active a {
 	color: var(--color-text-light);
 }
-.nav-list .item > a {
+.nav-list .item > a,
+.nav-list .item > .as-link {
 	padding: 0 1.5rem;
 }
 .nav-list .item .icon {
@@ -934,7 +936,7 @@ a.signin {
 		display: none;
 	}
 	.flux .item.manage,
-.flux_header .item.website {
+	.flux_header .item.website {
 		width: 35px;
 		text-align: center;
 	}
@@ -981,11 +983,11 @@ a.signin {
 		margin: 0;
 	}
 	.nav_menu .stick,
-.nav_menu .group {
+	.nav_menu .group {
 		margin: 0;
 	}
 	.nav_menu .stick .btn,
-.nav_menu .group .btn {
+	.nav_menu .group .btn {
 		margin: 0;
 	}
 	.nav_menu .item.search {
@@ -1001,7 +1003,7 @@ a.signin {
 		width: 100%;
 	}
 	#overlay .close,
-.dropdown-menu .toggle_aside {
+	.dropdown-menu .toggle_aside {
 		background-color: var(--color-background-aside);
 		display: block;
 		height: 50px;
@@ -1010,11 +1012,11 @@ a.signin {
 		padding-left: 10px;
 	}
 	#overlay .close:hover,
-.dropdown-menu .toggle_aside:hover {
+	.dropdown-menu .toggle_aside:hover {
 		background-color: var(--color-background-nav);
 	}
 	.dropdown-target:target ~ .dropdown-toggle::after,
-.dropdown-target:target ~ .dropdown-toggle.btn::after {
+	.dropdown-target:target ~ .dropdown-toggle.btn::after {
 		display: none;
 	}
 	.share .dropdown-menu {
@@ -1053,10 +1055,10 @@ a.signin {
 		top: 0;
 	}
 	form#mark-read-menu,
-a#actualize,
-a#toggle-order,
-div#nav_menu_actions,
-div#nav_menu_views {
+	a#actualize,
+	a#toggle-order,
+	div#nav_menu_actions,
+	div#nav_menu_views {
 		position: absolute;
 	}
 	form#mark-read-menu {
@@ -1064,15 +1066,15 @@ div#nav_menu_views {
 		top: 0;
 	}
 	a#actualize,
-a#toggle-order {
+	a#toggle-order {
 		left: 0;
 	}
 	a#actualize {
 		top: 0;
 	}
 	a#toggle-order,
-div#nav_menu_actions,
-div#nav_menu_views {
+	div#nav_menu_actions,
+	div#nav_menu_views {
 		top: 36px;
 	}
 	div#nav_menu_actions {

+ 4 - 2
p/themes/Swage/swage.scss

@@ -338,7 +338,8 @@ form {
 			cursor: default;
 		}
 
-		a:hover {
+		a:hover,
+		.as-link:hover {
 			background-color: var(--color-background-nav-darker);
 			color: var(--color-text-light);
 		}
@@ -352,7 +353,8 @@ form {
 			}
 		}
 
-		> a {
+		> a,
+		> .as-link {
 			padding: 0 1.5rem;
 		}
 

+ 2 - 1
p/themes/base-theme/base.css

@@ -180,7 +180,8 @@ th {
 .nav-list .item.active a {
 }
 
-.nav-list .item > a {
+.nav-list .item > a,
+.nav-list .item > .as-link {
 	padding: 0 10px;
 }
 

+ 2 - 1
p/themes/base-theme/base.rtl.css

@@ -180,7 +180,8 @@ th {
 .nav-list .item.active a {
 }
 
-.nav-list .item > a {
+.nav-list .item > a,
+.nav-list .item > .as-link {
 	padding: 0 10px;
 }
 

+ 3 - 0
p/themes/base-theme/frss.css

@@ -395,6 +395,8 @@ button.as-link:hover,
 button.as-link:active {
 	background: transparent;
 	color: inherit;
+	font-family: inherit;
+	font-size: inherit;
 	border: none;
 	cursor: pointer;
 	text-align: left;
@@ -670,6 +672,7 @@ input[type="checkbox"]:focus-visible {
 
 .nav-list .item,
 .nav-list .item > a,
+.nav-list .item > .as-link,
 .nav-list .item > span {
 	display: block;
 	overflow: hidden;

+ 3 - 0
p/themes/base-theme/frss.rtl.css

@@ -395,6 +395,8 @@ button.as-link:hover,
 button.as-link:active {
 	background: transparent;
 	color: inherit;
+	font-family: inherit;
+	font-size: inherit;
 	border: none;
 	cursor: pointer;
 	text-align: right;
@@ -670,6 +672,7 @@ input[type="checkbox"]:focus-visible {
 
 .nav-list .item,
 .nav-list .item > a,
+.nav-list .item > .as-link,
 .nav-list .item > span {
 	display: block;
 	overflow: hidden;

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно