Compare commits
No commits in common. "111d5758e0daa5b6a779de2f3ce929ad2e98c72f" and "ede28ae4a7b0f4c9d8ad52dc89192f78e6c6993c" have entirely different histories.
111d5758e0
...
ede28ae4a7
@ -1,14 +1,14 @@
|
||||
//Alex Rechtin//
|
||||
package users;
|
||||
|
||||
import com.jfoenix.controls.JFXPasswordField;
|
||||
import com.jfoenix.controls.JFXTextField;
|
||||
import com.jfoenix.controls.JFXToggleButton;
|
||||
import helper.HttpRequestException;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.PasswordField;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.control.ToggleButton;
|
||||
import javafx.stage.Stage;
|
||||
import container.DataController;
|
||||
import container.User;
|
||||
@ -18,17 +18,17 @@ import java.util.Objects;
|
||||
public class CreateUserController {
|
||||
|
||||
@FXML
|
||||
protected JFXTextField textName;
|
||||
protected TextField textName;
|
||||
@FXML
|
||||
protected JFXPasswordField textPassword;
|
||||
protected PasswordField textPassword;
|
||||
@FXML
|
||||
protected JFXPasswordField textPasswordSecond;
|
||||
protected PasswordField textPasswordSecond;
|
||||
@FXML
|
||||
protected JFXToggleButton checkButtonIsAdmin;
|
||||
protected ToggleButton checkButtonIsAdmin;
|
||||
@FXML
|
||||
protected JFXTextField textLogin;
|
||||
protected TextField textLogin;
|
||||
@FXML
|
||||
protected JFXTextField textForename;
|
||||
protected TextField textForename;
|
||||
@FXML
|
||||
protected Label labelError;
|
||||
|
||||
|
@ -1,38 +1,25 @@
|
||||
/*Marco Kühn*/
|
||||
* {
|
||||
-fx-dark-background-color: #3E415F;
|
||||
|
||||
-fx-darkest-background-color: #2B2D42;
|
||||
|
||||
-fx-bright-background-color: #8D99AE;
|
||||
-fx-brighter-background-color: #ff5555;
|
||||
-fx-brightest-background-color: #ffffff;
|
||||
|
||||
-fx-bright-border-color: #B0B0B0;
|
||||
-fx-brighter-text-color: #ffffff;
|
||||
}
|
||||
|
||||
GridPane{
|
||||
-fx-background-color: -fx-dark-background-color;
|
||||
-fx-background-color: #3E415F;
|
||||
-fx-padding: 20px;
|
||||
-fx-font-size: 20px;
|
||||
-fx-font-family: Segoe UI;
|
||||
|
||||
-fx-border-insets: 1;
|
||||
-fx-border-color: -fx-bright-border-color;
|
||||
-fx-border-color: #B0B0B0;
|
||||
-fx-border-style: solid;
|
||||
-fx-border-width: 2;
|
||||
-fx-effect: dropshadow(three-pass-box, rgba(100, 100, 100, 1), 24, 0.5, 0, 0);
|
||||
}
|
||||
|
||||
Label{
|
||||
-fx-text-fill: -fx-brighter-text-color;
|
||||
-fx-text-fill: white;
|
||||
-fx-max-width: 150px;
|
||||
-fx-min-width: 150px;
|
||||
}
|
||||
|
||||
.mainLabel{
|
||||
-fx-background-color: -fx-bright-background-color;
|
||||
-fx-background-color: #8D99AE;
|
||||
-fx-padding: 10px;
|
||||
-fx-max-width: 200px;
|
||||
-fx-min-width: 200px;
|
||||
@ -42,22 +29,22 @@ Label{
|
||||
|
||||
.inputField{
|
||||
-fx-padding: 10px;
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
.mainButton{
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
JFXButton{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
#labelError{
|
||||
-fx-font-weight: bold;
|
||||
-fx-max-width: 1000px;
|
||||
-fx-text-fill: -fx-brighter-background-color;
|
||||
-fx-text-fill: #ff5555;
|
||||
-fx-padding: 16px;
|
||||
-fx-min-height: 140px;
|
||||
-fx-max-height: 400px;
|
||||
@ -66,15 +53,15 @@ JFXButton{
|
||||
}
|
||||
|
||||
.inputDate{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
.comboBox{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
.timePicker{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
.jfx-time-picker .date-picker-popup{
|
||||
|
@ -1,70 +1,66 @@
|
||||
/*Alex Rechtin, Marco Kühn*/
|
||||
* {
|
||||
-fx-dark-background-color: #525E74;
|
||||
-fx-darkest-background-color: #2B2D42;
|
||||
-fx-base-background-color: #2B2D42;
|
||||
-fx-base1-background-color: #525E74;
|
||||
|
||||
-fx-bright-background-color: #77859E;
|
||||
-fx-brighter-background-color: #282C34 ;
|
||||
-fx-brightest-background-color: #333333 ;
|
||||
|
||||
-fx-bright-border-color: #B0B0B0;
|
||||
-fx-brighter-text-color: #ffffff;
|
||||
-fx-main-border-color: #B0B0B0;
|
||||
-fx-main-text-color: #ffffff;
|
||||
}
|
||||
|
||||
|
||||
GridPane{
|
||||
-fx-background-color: -fx-darkest-background-color;
|
||||
-fx-background-color: -fx-base-background-color;
|
||||
}
|
||||
|
||||
.main-panel{
|
||||
-fx-background-color: -fx-brighter-background-color;
|
||||
-fx-background-color: #282C34;
|
||||
}
|
||||
|
||||
.vbox-main{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: #333333;
|
||||
-fx-alignment: top-center;
|
||||
|
||||
}
|
||||
|
||||
.gridCalendar Line{
|
||||
-fx-stroke: -fx-bright-border-color;
|
||||
-fx-stroke: -fx-main-border-color;
|
||||
}
|
||||
|
||||
.gridCalender{
|
||||
-fx-background-color: -fx-darkest-background-color;
|
||||
-fx-background-color: -fx-base-background-color;
|
||||
-fx-min-height: 80px;
|
||||
-fx-max-height: 80px;
|
||||
}
|
||||
|
||||
.labelMonth{
|
||||
-fx-padding: 0 0 0 20;
|
||||
-fx-background-color: -fx-bright-background-color;
|
||||
-fx-background-color: #77859E;
|
||||
-fx-font-size: 35px;
|
||||
-fx-font-weight: bold;
|
||||
}
|
||||
|
||||
.scrollDays{
|
||||
-fx-background-color: -fx-darkest-background-color;
|
||||
-fx-border-color: -fx-bright-border-color;
|
||||
-fx-background-color: -fx-base-background-color;
|
||||
-fx-border-color: -fx-main-border-color;
|
||||
}
|
||||
|
||||
.vBoxDays{
|
||||
-fx-background-color: -fx-darkest-background-color;
|
||||
-fx-background-color: -fx-base-background-color;
|
||||
}
|
||||
|
||||
.labelDays{
|
||||
-fx-alignment: center;
|
||||
-fx-background-color: -fx-dark-background-color;
|
||||
-fx-background-color: -fx-base1-background-color;
|
||||
-fx-font-size: 25px;
|
||||
-fx-border-color: -fx-bright-border-color;
|
||||
-fx-border-color: -fx-main-border-color;
|
||||
}
|
||||
|
||||
Label{
|
||||
-fx-text-fill: -fx-brighter-text-color;
|
||||
-fx-text-fill: -fx-main-text-color;
|
||||
}
|
||||
|
||||
.event{
|
||||
-fx-background-color: -fx-dark-background-color;
|
||||
-fx-background-color: -fx-base1-background-color;
|
||||
}
|
||||
|
||||
.main-btn{
|
||||
@ -81,7 +77,7 @@ Label{
|
||||
}
|
||||
|
||||
.buttonBox{
|
||||
-fx-background-color: -fx-bright-background-color;
|
||||
-fx-background-color: #77859E;
|
||||
}
|
||||
|
||||
.navBtn{
|
||||
|
@ -1,35 +1,25 @@
|
||||
/* Marco Kühn */
|
||||
* {
|
||||
-fx-dark-background-color: #3E415F;
|
||||
|
||||
-fx-bright-background-color: #ff5555;
|
||||
-fx-brighter-background-color: #8D99AE;
|
||||
-fx-brightest-background-color: #ffffff;
|
||||
|
||||
-fx-bright-border-color: #B0B0B0;
|
||||
-fx-brighter-text-color: #ffffff;
|
||||
}
|
||||
GridPane{
|
||||
-fx-background-color: -fx-dark-background-color;
|
||||
-fx-background-color: #3E415F;
|
||||
-fx-padding: 20px;
|
||||
-fx-font-size: 20px;
|
||||
-fx-font-family: Segoe UI;
|
||||
|
||||
-fx-border-insets: 1;
|
||||
-fx-border-color: -fx-bright-border-color;
|
||||
-fx-border-color: #B0B0B0;
|
||||
-fx-border-style: solid;
|
||||
-fx-border-width: 2;
|
||||
-fx-effect: dropshadow(three-pass-box, rgba(100, 100, 100, 1), 24, 0.5, 0, 0);
|
||||
}
|
||||
|
||||
Label{
|
||||
-fx-text-fill: -fx-brighter-text-color;
|
||||
-fx-text-fill: white;
|
||||
-fx-max-width: 200px;
|
||||
-fx-min-width: 200px;
|
||||
}
|
||||
|
||||
.mainLabel{
|
||||
-fx-background-color: -fx-brighter-background-color;
|
||||
-fx-background-color: #8D99AE;
|
||||
-fx-padding: 10px;
|
||||
-fx-max-width: 200px;
|
||||
-fx-min-width: 200px;
|
||||
@ -39,17 +29,17 @@ Label{
|
||||
|
||||
.mainButton{
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
JFXButton{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
#labelError{
|
||||
-fx-font-weight: bold;
|
||||
-fx-max-width: 1000px;
|
||||
-fx-text-fill: -fx-bright-background-color;
|
||||
-fx-text-fill: #ff5555;
|
||||
-fx-padding: 16px;
|
||||
-fx-min-height: 140px;
|
||||
-fx-max-height: 400px;
|
||||
@ -58,7 +48,7 @@ JFXButton{
|
||||
}
|
||||
|
||||
.comboBox{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
-fx-max-width: 200px;
|
||||
-fx-min-width: 200px;
|
||||
}
|
||||
|
@ -1,21 +1,21 @@
|
||||
/*Alex Rechtin*/
|
||||
* {
|
||||
-fx-dark-background-color: #3E415F;
|
||||
-fx-bright-background-color: #ffffff;
|
||||
-fx-bright-border-color: #B0B0B0;
|
||||
-fx-brighter-text-color: #ff5555;
|
||||
-fx-brightest-text-color: #ffffff;
|
||||
-fx-base-background-color: #2B2D42;
|
||||
-fx-base1-background-color: #525E74;
|
||||
|
||||
-fx-main-border-color: #B0B0B0;
|
||||
-fx-main-text-color: #ffffff;
|
||||
}
|
||||
|
||||
|
||||
GridPane{
|
||||
-fx-background-color: -fx-dark-background-color;
|
||||
-fx-background-color: #3E415F;
|
||||
-fx-padding: 20px;
|
||||
-fx-font-size: 20px;
|
||||
-fx-font-family: Segoe UI;
|
||||
|
||||
-fx-border-insets: 1;
|
||||
-fx-border-color: -fx-bright-border-color;
|
||||
-fx-border-color: #B0B0B0;
|
||||
-fx-border-style: solid;
|
||||
-fx-border-width: 2;
|
||||
-fx-effect: dropshadow(three-pass-box, rgba(100, 100, 100, 1), 24, 0.5, 0, 0);
|
||||
@ -31,13 +31,12 @@ GridPane{
|
||||
|
||||
|
||||
Label{
|
||||
-fx-text-fill: -fx-brightest-text-color;
|
||||
-fx-text-fill: white;
|
||||
-fx-max-width: 150px;
|
||||
-fx-min-width: 150px;
|
||||
}
|
||||
|
||||
.textField{
|
||||
-fx-background-color: -fx-bright-background-color;
|
||||
-fx-max-width: 400px;
|
||||
-fx-min-width: 400px;
|
||||
}
|
||||
@ -45,11 +44,9 @@ Label{
|
||||
.errorMessage{
|
||||
-fx-max-width: 400px;
|
||||
-fx-min-width: 400px;
|
||||
-fx-text-fill: -fx-brighter-text-color;
|
||||
}
|
||||
|
||||
JFXButton{
|
||||
-fx-background-color: -fx-bright-background-color;
|
||||
Button{
|
||||
-fx-max-width: 150px;
|
||||
-fx-min-width: 150px;
|
||||
}
|
||||
|
@ -2,13 +2,10 @@
|
||||
|
||||
<!-- Alex Rechtin -->
|
||||
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import com.jfoenix.controls.JFXToggleButton?>
|
||||
<?import com.jfoenix.controls.JFXButton?>
|
||||
<?import com.jfoenix.controls.JFXPasswordField?>
|
||||
<?import com.jfoenix.controls.JFXTextField?>
|
||||
<GridPane xmlns="http://javafx.com/javafx"
|
||||
xmlns:fx="http://javafx.com/fxml"
|
||||
fx:controller="users.CreateUserController">
|
||||
@ -36,15 +33,15 @@
|
||||
<Label styleClass="inputLabel" GridPane.rowIndex="2" GridPane.columnIndex="1">Vorname:</Label>
|
||||
<Label styleClass="inputLabel" GridPane.rowIndex="3" GridPane.columnIndex="1">Nachname:</Label>
|
||||
<Label styleClass="inputLabel" GridPane.rowIndex="4" GridPane.columnIndex="1">Passwort:</Label>
|
||||
<Label styleClass="inputLabel" wrapText="true" GridPane.rowIndex="5" GridPane.columnIndex="1">Passwort wiederholen:</Label>
|
||||
<Label styleClass="inputLabel" GridPane.rowIndex="5" GridPane.columnIndex="1">Passwort wiederholen:</Label>
|
||||
|
||||
<Label styleClass="inputLabelAdmin" GridPane.rowIndex="6" GridPane.columnIndex="1">Admin:</Label>
|
||||
|
||||
<JFXTextField fx:id="textLogin" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="1" />
|
||||
<JFXTextField fx:id="textForename" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="2" />
|
||||
<JFXTextField fx:id="textName" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="3" />
|
||||
<JFXPasswordField fx:id="textPassword" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="4" />
|
||||
<JFXPasswordField fx:id="textPasswordSecond" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="5" />
|
||||
<TextField fx:id="textLogin" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="1" />
|
||||
<TextField fx:id="textForename" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="2" />
|
||||
<TextField fx:id="textName" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="3" />
|
||||
<PasswordField fx:id="textPassword" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="4" />
|
||||
<PasswordField fx:id="textPasswordSecond" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="5" />
|
||||
|
||||
<JFXToggleButton fx:id="checkButtonIsAdmin" GridPane.columnIndex="2" GridPane.rowIndex="6"/>
|
||||
|
||||
@ -54,8 +51,8 @@
|
||||
<HBox.margin>
|
||||
<Insets right="100" left="100"/>
|
||||
</HBox.margin>
|
||||
<JFXButton onAction="#abortBtnClick">Abbrechen</JFXButton>
|
||||
<JFXButton onAction="#createUser" styleClass="btnLogin" >Anlegen</JFXButton>
|
||||
<Button onAction="#abortBtnClick">Abbrechen</Button>
|
||||
<Button onAction="#createUser" styleClass="btnLogin" >Anlegen</Button>
|
||||
|
||||
</HBox>
|
||||
</GridPane>
|
||||
|
@ -1,13 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Alex Rechtin-->
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import com.jfoenix.controls.JFXToggleButton?>
|
||||
<?import com.jfoenix.controls.JFXTextField?>
|
||||
<?import com.jfoenix.controls.JFXPasswordField?>
|
||||
<?import com.jfoenix.controls.JFXButton?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<GridPane xmlns="http://javafx.com/javafx"
|
||||
xmlns:fx="http://javafx.com/fxml"
|
||||
fx:controller="users.EditUserController">
|
||||
@ -35,15 +31,15 @@
|
||||
<Label styleClass="inputLabel" GridPane.rowIndex="2" GridPane.columnIndex="1">Vorname:</Label>
|
||||
<Label styleClass="inputLabel" GridPane.rowIndex="3" GridPane.columnIndex="1">Nachname:</Label>
|
||||
<Label styleClass="inputLabel" GridPane.rowIndex="4" GridPane.columnIndex="1">Passwort:</Label>
|
||||
<Label styleClass="inputLabel" wrapText="true" GridPane.rowIndex="5" GridPane.columnIndex="1">Passwort wiederholen:</Label>
|
||||
<Label styleClass="inputLabel" GridPane.rowIndex="5" GridPane.columnIndex="1">Passwort wiederholen:</Label>
|
||||
|
||||
<Label styleClass="inputLabelAdmin" GridPane.rowIndex="6" GridPane.columnIndex="1">Admin:</Label>
|
||||
|
||||
<JFXTextField fx:id="textLogin" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="1" />
|
||||
<JFXTextField fx:id="textForename" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="2" />
|
||||
<JFXTextField fx:id="textName" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="3" />
|
||||
<JFXPasswordField fx:id="textPassword" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="4" />
|
||||
<JFXPasswordField fx:id="textPasswordSecond" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="5" />
|
||||
<TextField fx:id="textLogin" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="1" />
|
||||
<TextField fx:id="textForename" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="2" />
|
||||
<TextField fx:id="textName" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="3" />
|
||||
<PasswordField fx:id="textPassword" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="4" />
|
||||
<PasswordField fx:id="textPasswordSecond" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="5" />
|
||||
|
||||
<JFXToggleButton fx:id="checkButtonIsAdmin" GridPane.columnIndex="2" GridPane.rowIndex="6"/>
|
||||
|
||||
@ -53,8 +49,8 @@
|
||||
<HBox.margin>
|
||||
<Insets right="100" left="100"/>
|
||||
</HBox.margin>
|
||||
<JFXButton onAction="#abortBtnClick">Abbrechen</JFXButton>
|
||||
<JFXButton onAction="#createUser" styleClass="btnLogin" >Bearbeiten</JFXButton>
|
||||
<Button onAction="#abortBtnClick">Abbrechen</Button>
|
||||
<Button onAction="#createUser" styleClass="btnLogin" >Bearbeiten</Button>
|
||||
|
||||
</HBox>
|
||||
</GridPane>
|
||||
|
@ -1,30 +1,27 @@
|
||||
/* Marco Kühn*/
|
||||
* {
|
||||
-fx-dark-background-color: #3E415F;
|
||||
-fx-base-background-color: #2B2D42;
|
||||
-fx-base1-background-color: #525E74;
|
||||
|
||||
-fx-brightest-background-color: #ffffff;
|
||||
|
||||
-fx-bright-border-color: #B0B0B0;
|
||||
|
||||
-fx-bright-text-color: ##ff5555;
|
||||
-fx-brighter-text-color: #ffffff;
|
||||
-fx-main-border-color: #B0B0B0;
|
||||
-fx-main-text-color: #ffffff;
|
||||
}
|
||||
|
||||
GridPane{
|
||||
-fx-background-color: -fx-dark-background-color;
|
||||
-fx-background-color: #3E415F;
|
||||
-fx-padding: 20px;
|
||||
-fx-font-size: 20px;
|
||||
-fx-font-family: Segoe UI;
|
||||
|
||||
-fx-border-insets: 1;
|
||||
-fx-border-color: -fx-bright-border-color;
|
||||
-fx-border-color: #B0B0B0;
|
||||
-fx-border-style: solid;
|
||||
-fx-border-width: 2;
|
||||
-fx-effect: dropshadow(three-pass-box, rgba(100, 100, 100, 1), 24, 0.5, 0, 0);
|
||||
}
|
||||
|
||||
Label{
|
||||
-fx-text-fill: -fx-brighter-text-color;
|
||||
-fx-text-fill: white;
|
||||
-fx-max-width: 150px;
|
||||
-fx-min-width: 150px;
|
||||
}
|
||||
@ -32,7 +29,7 @@ Label{
|
||||
.errorLbl{
|
||||
-fx-font-weight: bold;
|
||||
-fx-max-width: 200px;
|
||||
-fx-text-fill: -fx-bright-text-color;
|
||||
-fx-text-fill: #ff5555;
|
||||
-fx-padding: 16px;
|
||||
-fx-min-height: 140px;
|
||||
-fx-max-height: 400px;
|
||||
@ -41,17 +38,17 @@ Label{
|
||||
}
|
||||
|
||||
.userField{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
.passField{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
.quitBtn{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
.loginBtn{
|
||||
-fx-background-color: -fx-brightest-background-color;
|
||||
-fx-background-color: white;
|
||||
}
|
Loading…
Reference in New Issue
Block a user