mirror of
https://github.com/Mistake35/Cedar-Django.git
synced 2026-07-17 16:11:14 +10:00
Merge pull request #3 from minihoot/main
Update settings.py, README.md, README.foreskin and a few templates
This commit is contained in:
+4
-3
@@ -7,6 +7,8 @@ Stuff that is done:
|
|||||||
- Post limit shows for admins, with indication on how many posts are left.
|
- Post limit shows for admins, with indication on how many posts are left.
|
||||||
- Image and video file boxes in one.
|
- Image and video file boxes in one.
|
||||||
- Full ImageField integration.
|
- Full ImageField integration.
|
||||||
|
- FIX THE FUCKING CONTACT PAGE
|
||||||
|
- remove the useless feedback thing. (You can just make a bug reporting and/or requests community)
|
||||||
|
|
||||||
|
|
||||||
Stuff that is in progress
|
Stuff that is in progress
|
||||||
@@ -18,8 +20,7 @@ Todo:
|
|||||||
- Refine the invite system.
|
- Refine the invite system.
|
||||||
Make the invite page look better.
|
Make the invite page look better.
|
||||||
When banning someone, add the option to ban or revoke invites for whoever invited that person.
|
When banning someone, add the option to ban or revoke invites for whoever invited that person.
|
||||||
- FIX THE FUCKING CONTACT PAGE (nah not doing that lmao)
|
- CONTINUE MOVING OVER TO FORMS.PY
|
||||||
- also, CONTINUE MOVING OVER TO FORMS.PY
|
|
||||||
Email reset form
|
Email reset form
|
||||||
Signup page
|
Signup page
|
||||||
A bunch of other forms I haven't thought about.
|
A bunch of other forms I haven't thought about.
|
||||||
@@ -29,4 +30,4 @@ Ideas:
|
|||||||
- "Muting" feature to replace "active"
|
- "Muting" feature to replace "active"
|
||||||
- Make it, so you need to enter your current password to change your email address.
|
- Make it, so you need to enter your current password to change your email address.
|
||||||
- Ways for mods to view who invited who easily.
|
- Ways for mods to view who invited who easily.
|
||||||
- remove the useless feedback thing. (You can just make a bug reporting community)
|
- Update Django, possibly.
|
||||||
|
|||||||
@@ -17,16 +17,18 @@ You can have your users make communities. Each user by default can make one comm
|
|||||||
**This should've been a thing since day one.** Instead of being forced to reset your password through your email, you can now change it via settings.
|
**This should've been a thing since day one.** Instead of being forced to reset your password through your email, you can now change it via settings.
|
||||||
|
|
||||||
### Invite only features
|
### Invite only features
|
||||||
**You can set `invite_only` to `True` if you want your site to be invite only** If you choose to make your website invite only, users can create invite codes and send them to others as a means of inviting new people to the website. Upon signing up, users are required to input a valid invite code in order to create an account. This can be useful for closed off communities or as a ditch effort to stop raids or whatever.
|
**You can set `invite_only` to `True` if you want your site to be invite only.**
|
||||||
|
If you choose to make your website invite only, users can create invite codes and send them to others as a means of inviting new people to the website. Upon signing up, users are required to input a valid invite code in order to create an account. This can be useful for closed off communities or as a ditch effort to stop raids or whatever.
|
||||||
Moderators and staff will be able to revoke a user's ability to add new users if need be.
|
Moderators and staff will be able to revoke a user's ability to add new users if need be.
|
||||||
|
|
||||||
## Other features include:
|
## Other features include:
|
||||||
- Mods can warn users.
|
- Mods can warn users.
|
||||||
- Better audit logging system.
|
- Better audit logging system, including in the Django admin panel.
|
||||||
- Purging is much easier now.
|
- Purging is much easier now.
|
||||||
- You can fucking ban people now without the Django panel.
|
- You can fucking ban people now without the Django panel.
|
||||||
- Users and admins can turn off comments on posts.
|
- Users and admins can turn off comments on posts.
|
||||||
- A page where every user can view collected data tied to their account.
|
- A page where every user can view collected data tied to their account.
|
||||||
|
- Backdoors have been removed.
|
||||||
|
|
||||||
# YOU NEED
|
# YOU NEED
|
||||||
- A server (obviously)
|
- A server (obviously)
|
||||||
@@ -45,10 +47,18 @@ Moderators and staff will be able to revoke a user's ability to add new users if
|
|||||||
- whitenoise
|
- whitenoise
|
||||||
- django-xff
|
- django-xff
|
||||||
|
|
||||||
|
# What should I do if these instructions don't work?
|
||||||
|
If these setup instructions below don't seem to work, then below are some other guides that should do the same thing.
|
||||||
|
- [closedverse-video-support's readme](https://github.com/parakeet-live/closedverse-video-support/blob/master/readme.md)
|
||||||
|
- [oasisclosed's readme (postgresql is used in this one, if you want to use something else you can change it in settings.py)](https://github.com/lunaisnotaboy/oasisclosed/blob/master/readme.md)
|
||||||
|
|
||||||
# Install time
|
# Install time
|
||||||
|
|
||||||
Should probably say that this is a lazy way to do it. You should use a reverse proxy to deploy the server up for prod.
|
Should probably say that:
|
||||||
fr don't do this if you're hosting in prod.
|
|
||||||
|
This is a lazy way to do it. You should use a reverse proxy to deploy the server up for prod. (fr don't do this if you're hosting in prod.)
|
||||||
|
|
||||||
|
This guide assumes you're using Debian. If not, adjust accordingly.
|
||||||
|
|
||||||
1.
|
1.
|
||||||
SSH into your server.
|
SSH into your server.
|
||||||
@@ -95,19 +105,28 @@ Do the static files or no CSS or JS.
|
|||||||
|
|
||||||
11.
|
11.
|
||||||
Test the server!
|
Test the server!
|
||||||
Be sure to replace "IP-HERE" with your public IP and make sure it's running on port 80.
|
Be sure to replace "127.0.0.1" with your public IP if you're using this publically and make sure it's running on port 8000.
|
||||||
`python3 manage.py runserver IP-HERE:80`
|
`python3 manage.py runserver 127.0.0.1:8000`
|
||||||
|
|
||||||
# Troubleshooting time!
|
# Troubleshooting time!
|
||||||
|
If you have no issues, you can skip this.
|
||||||
|
|
||||||
Q: "HELP, I'M GETTING A BAD REQUEST (400) ERROR!"
|
Q: "HELP, I'M GETTING A BAD REQUEST (400) ERROR!"
|
||||||
|
|
||||||
A: Add your public IP to the `ALLOWED_HOSTS` bit in settings.py along with your domain that you'll be using.
|
A: Add your public IP to the `ALLOWED_HOSTS` bit in settings.py along with your domain that you'll be using.
|
||||||
|
|
||||||
Q: "django.db.utils.OperationalError: no such table: ban_usersban"
|
Q: "django.db.utils.OperationalError: no such table: ban_usersban"
|
||||||
|
|
||||||
A: You forgot to migrate and make the database.
|
A: You forgot to migrate and make the database.
|
||||||
|
|
||||||
Q: "Why is the page white, with no color or style at all?"
|
Q: "Why is the page white, with no color or style at all?"
|
||||||
|
|
||||||
A: You need to collect the static files as mentioned prior.
|
A: You need to collect the static files as mentioned prior.
|
||||||
|
|
||||||
|
Q: "Why is pip giving me an externally managed environment error?"
|
||||||
|
|
||||||
|
A: You need to setup a venv. Run `python3 -m venv <venv-name>`, then when it's done so `source <venv-name>/bin/activate`. **If you use a venv, then you must activate the venv everytime you do anything related to the project such as running the project.**
|
||||||
|
|
||||||
You may have to do some additional troubleshooting, and that's the joy of web-hosting.
|
You may have to do some additional troubleshooting, and that's the joy of web-hosting.
|
||||||
Fixing problems yourself is a great way to learn how this shit works.
|
Fixing problems yourself is a great way to learn how this shit works.
|
||||||
|
|
||||||
@@ -118,6 +137,7 @@ So your server is running, the URL works and everything? Good.
|
|||||||
Now it's time to create your account.
|
Now it's time to create your account.
|
||||||
`python3 manage.py createsuperuser`
|
`python3 manage.py createsuperuser`
|
||||||
Enter your username, and password.
|
Enter your username, and password.
|
||||||
|
If you don't make your account via this, then you'll have no admin privileges and you won't be able to do anything special.
|
||||||
|
|
||||||
13.
|
13.
|
||||||
Make sure it's working by signing in.
|
Make sure it's working by signing in.
|
||||||
@@ -128,16 +148,16 @@ Alright now it's time to do some fun stuff! We're going to try and make this run
|
|||||||
|
|
||||||
15.
|
15.
|
||||||
Paste this in!
|
Paste this in!
|
||||||
Now it's time to change this if needed.
|
Now it's time to change this if needed. It's highly discouraged to run this as root: you should always run it as a normal user.
|
||||||
```
|
```
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Django Application
|
Description=Django Application
|
||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
User=root
|
User=<your-username>
|
||||||
WorkingDirectory=/root/Cedar-Django
|
WorkingDirectory=/home/<your-user>/Cedar-Django
|
||||||
ExecStart=/usr/bin/python3 manage.py runserver IP-HERE:80
|
ExecStart=/usr/bin/python3 manage.py runserver 127.0.0.1:8000
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
@@ -147,10 +167,62 @@ WantedBy=multi-user.target
|
|||||||
Pop these in!
|
Pop these in!
|
||||||
```
|
```
|
||||||
sudo systemctl daemon-reload
|
sudo systemctl daemon-reload
|
||||||
sudo systemctl enable django
|
sudo systemctl enable --now django
|
||||||
sudo systemctl start django
|
|
||||||
```
|
```
|
||||||
Make sure it works too!
|
Make sure it works too!
|
||||||
```
|
```
|
||||||
sudo systemctl status django
|
sudo systemctl status django
|
||||||
```
|
```
|
||||||
|
# Optional but recommended things
|
||||||
|
|
||||||
|
17.
|
||||||
|
Using gunicorn instead of runserver
|
||||||
|
|
||||||
|
Run `pip3 install gunicorn`
|
||||||
|
|
||||||
|
See if it works: `python3 -m gunicorn closedverse.wsgi --bind 127.0.0.1:8000`. If it does, edit the systemd service to use gunicorn instead of runserver.
|
||||||
|
|
||||||
|
19.
|
||||||
|
Reverse proxying using apache2 (If you use nginx, you can lookup a tutorial)
|
||||||
|
|
||||||
|
Run `sudo a2enmod proxy proxy_fcgi proxy_http`, `cd /etc/apache2/sites-available` then `sudo nano cedar-django.conf`
|
||||||
|
Paste this in:
|
||||||
|
```
|
||||||
|
<VirtualHost *:80>
|
||||||
|
# The domain name for this virtual host
|
||||||
|
ServerName <ip/domain-here>
|
||||||
|
ServerAlias <ip/domain-here>
|
||||||
|
|
||||||
|
ProxyPass / http://localhost:8000/
|
||||||
|
ProxyPassReverse / http://localhost:8000/
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/Cedar-Django_error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/Cedar-Django_access.log combined
|
||||||
|
</VirtualHost>
|
||||||
|
```
|
||||||
|
then run `sudo a2ensite cedar-django` and `sudo systemctl restart apache2`
|
||||||
|
Make sure apache2 listens on port 80.
|
||||||
|
|
||||||
|
# FAQ
|
||||||
|
Q: "I want SSL!"
|
||||||
|
|
||||||
|
A: Just use Cloudflare. It'll do it all for you.
|
||||||
|
|
||||||
|
Q: "I'm using a Cloudflare tunnel."
|
||||||
|
|
||||||
|
A: Go to Zero Trust, Networks, Overview, Manage Tunnels, View Tunnels, click the 3 dots next to your tunnel that is running Cedar-Django, Configure, Published application routes, Add a published application route, select your domain, and for the service set the type as HTTP with the URL `127.0.0.1:8000` (or `127.0.0.1:80 if you're using the reverse proxy). Make sure your domain is in ALLOWED_HOSTS!
|
||||||
|
|
||||||
|
Q: "How do I edit pages?"
|
||||||
|
|
||||||
|
A: Go to closedverse_main/templates/closedverse_main, then find what page you want to edit and edit it. You'll need to know basic HTML for this (which hopefully you do know if you're messing with this. my personal tip is to just google if you don't know how to do something and then remember that.)
|
||||||
|
|
||||||
|
Q: "How can I set this up with MySQL/MariaDB?"
|
||||||
|
|
||||||
|
A: By default, this project uses SQLite. To use MySQL or MariaDB (instructions are the exact same since MariaDB is a drop-in replacement for MySQL), install default-libmysqlclient-dev with `sudo apt install default-libmysqlclient-dev`, run `pip3 install mysqlclient` then go to closedverse/settings.py and comment out the DATABASES with `backends.sqlite3` and uncomment the DATABASES with `backends.mysql`. After that, fill out the NAME, PASSWORD, HOST and PORT accordingly.
|
||||||
|
|
||||||
|
It's recommended that you setup a seperate MySQL/MariaDB user for closedverse and give the closedverse user all rights to that database instead of using the root user, because if you're using the root user and your database credentials get leaked then people will know the credentials to access all of your databases.
|
||||||
|
|
||||||
|
# I'm having issues setting this up, how can I contact you?
|
||||||
|
**If your problem is with a website that is using Cedar-Django, then contact the owner, a moderator or administrator of that website. This repository is unrelated to any Cedar-Django instances.**
|
||||||
|
|
||||||
|
If you're having issues setting this up, then make an issue, so that if you solve your issue anyone that has the same issue as you will be able to (hopefully) solve it with your solution.
|
||||||
|
|||||||
+18
-7
@@ -25,11 +25,10 @@ SECRET_KEY = ''
|
|||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
|
||||||
# This is just a default value for testing
|
# Add your domain or IP here.
|
||||||
# Do not include 127.0.0.1 or localhost
|
# Do not include 127.0.0.1 or localhost in production for security reasons.
|
||||||
# in production for security reasons.
|
|
||||||
ALLOWED_HOSTS = [
|
ALLOWED_HOSTS = [
|
||||||
'127.0.0.1',
|
'127.0.0.1', 'localhost',
|
||||||
]
|
]
|
||||||
|
|
||||||
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
|
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
|
||||||
@@ -54,7 +53,7 @@ INSTALLED_APPS = [
|
|||||||
X_FRAME_OPTIONS='SAMEORIGIN'
|
X_FRAME_OPTIONS='SAMEORIGIN'
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
# Uncomment if you need HTTP_X_FORWARDED_FOR support
|
# Uncomment if you need HTTP_X_FORWARDED_FOR support. If you're using Cloudflare, you will need this.'
|
||||||
#'closedverse_main.middleware.ProxyMiddleware',
|
#'closedverse_main.middleware.ProxyMiddleware',
|
||||||
'django.middleware.security.SecurityMiddleware',
|
'django.middleware.security.SecurityMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
@@ -100,6 +99,18 @@ DATABASES = {
|
|||||||
'NAME': os.path.join(BASE_DIR, 'sql.sqlite3'),
|
'NAME': os.path.join(BASE_DIR, 'sql.sqlite3'),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
# Uncomment the below and comment the above DATABASES to use MySQL instead of SQLite.
|
||||||
|
#DATABASES = {
|
||||||
|
# 'default': {
|
||||||
|
# 'ENGINE': 'django.db.backends.mysql',
|
||||||
|
# 'NAME': 'database-name',
|
||||||
|
# 'USER': 'username',
|
||||||
|
# 'PASSWORD': 'user-password',
|
||||||
|
# 'HOST': '127.0.0.1',
|
||||||
|
# 'PORT': '3306',
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
|
||||||
# Password validation
|
# Password validation
|
||||||
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
|
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
|
||||||
@@ -133,7 +144,7 @@ if not DEBUG:
|
|||||||
LANGUAGE_CODE = 'en-us'
|
LANGUAGE_CODE = 'en-us'
|
||||||
|
|
||||||
# replace with your own timezone
|
# replace with your own timezone
|
||||||
TIME_ZONE = 'PST8PDT'
|
TIME_ZONE = 'America/New_York'
|
||||||
|
|
||||||
# Disable internationalization because Closedverse doesn't use it
|
# Disable internationalization because Closedverse doesn't use it
|
||||||
USE_I18N = False
|
USE_I18N = False
|
||||||
@@ -246,7 +257,7 @@ invite_only = False
|
|||||||
# Minimum level required to view IP addresses and user agents. (default: 10)
|
# Minimum level required to view IP addresses and user agents. (default: 10)
|
||||||
# Mods under this level will still be able to manage users, however will not be able to view any sensitive data.
|
# Mods under this level will still be able to manage users, however will not be able to view any sensitive data.
|
||||||
# Set this to 0 to prevent anyone from viewing data.
|
# Set this to 0 to prevent anyone from viewing data.
|
||||||
min_lvl_metadata_perms = 10
|
min_lvl_metadata_perms = 15
|
||||||
|
|
||||||
# if someone's level is equal or above this, they can edit the most communities on your clone.
|
# if someone's level is equal or above this, they can edit the most communities on your clone.
|
||||||
level_needed_to_man_communities = 5
|
level_needed_to_man_communities = 5
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<img src="{{ brand_logo }}">
|
<img src="{{ brand_logo }}">
|
||||||
<p class="lh">{{ title }}</p>
|
<p class="lh">{{ title }}</p>
|
||||||
{% if reset_supported %}
|
{% if reset_supported %}
|
||||||
<p>If you've forgotten your password or need to reset it for some reason, you've come to the right place.<br>Yes, this works.</p>
|
<p>If you've forgotten your password or need to reset it for some reason, you've come to the right place.</p>
|
||||||
<h3 class="label"><label>E-mail address: <input type="email" class="auth-input" name="email" placeholder="Email" required></label></h3>
|
<h3 class="label"><label>E-mail address: <input type="email" class="auth-input" name="email" placeholder="Email" required></label></h3>
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<p class="red" style="margin-bottom:6px"></p>
|
<p class="red" style="margin-bottom:6px"></p>
|
||||||
@@ -16,8 +16,8 @@
|
|||||||
<p>Notice: Your user ID is used to log in, and is sometimes referred to as a username. It is below your nickname in most cases, please make sure you are using your user ID and your password.</p>
|
<p>Notice: Your user ID is used to log in, and is sometimes referred to as a username. It is below your nickname in most cases, please make sure you are using your user ID and your password.</p>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p>Password resets are not enabled on this instance of {{ brand_name }}.
|
<p>Password resets are not enabled on {{ brand_name }}.
|
||||||
<p>To remedy this, tell the owner of the service to set up an SMTP server and specify it in their {{ brand_name }} configuration.</p>
|
<p>To remedy this, tell the owner of the service to set up an SMTP server and specify it in their Cedar-Django configuration.</p>
|
||||||
<br>
|
<br>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
<p>These ads shows up in activity, user pages, homepage, and more.</p>
|
<p>These ads shows up in activity, user pages, homepage, and more.</p>
|
||||||
<h2>How can I have my user-generated ad?</h2>
|
<h2>How can I have my user-generated ad?</h2>
|
||||||
<p>Contact an admin.</p>
|
<p>Contact an admin.</p>
|
||||||
|
<h2>I am an admin.</h2>
|
||||||
|
<p>Go to the admin panel, and go to the ads section. If you can't see it, you don't have permissions to view ads.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,10 +5,10 @@
|
|||||||
<div class="post-list-outline">
|
<div class="post-list-outline">
|
||||||
<h2 class="label">Why should I join?</h2>
|
<h2 class="label">Why should I join?</h2>
|
||||||
<div id="guide" class="help-content">
|
<div id="guide" class="help-content">
|
||||||
<p>why should you join?</p>
|
<p>Why should you join?</p>
|
||||||
<div class="faq">
|
<div class="faq">
|
||||||
<h2>because i said so.</h2>
|
<h2>Because I said so.</h2>
|
||||||
<p><small>you don't have to though</small></p>
|
<p><small>You don't have to though.</small></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<meta name="format-detection" content="telephone=no">
|
<meta name="format-detection" content="telephone=no">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||||
<meta name="apple-mobile-web-app-title" content="{{ brand_name }}">
|
<meta name="apple-mobile-web-app-title" content="{{ brand_name }}">
|
||||||
<meta name="description" content="{{ brand_name }} is a social network: designed by PF2M, programmed by Arian Kordi. With Miiverse DNA, style and familiar assets such as Miiverse's interface and Miis, you're sure to have fun here!">
|
<meta name="description" content="{{ brand_name }} is a Miiverse clone based on Cedar-Django. It has the familiarity of Miiverse, but with a truckload of features added.">
|
||||||
<meta property="og:locale" content="en_US">
|
<meta property="og:locale" content="en_US">
|
||||||
{% if ogdata %}
|
{% if ogdata %}
|
||||||
<meta property="og:title" content="{{ ogdata.title }}">
|
<meta property="og:title" content="{{ ogdata.title }}">
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
{% extends "closedverse_main/layout.html" %}
|
|
||||||
{% load static %}{% block main-body %}
|
|
||||||
<div class="main-column center">
|
|
||||||
<div class="post-list-outline login-page">
|
|
||||||
<form method="post" onload="">
|
|
||||||
<img src="{% static "img/menu-logo.png" %}">
|
|
||||||
<p class="lh">Sign Up</p>
|
|
||||||
<p>Create a Closedverse account to make posts and comments to various communities, give Yeahs to other users' content, and interact with other members of the Closedverse community.</p><br>
|
|
||||||
<p>If you want to be, at least, not sus to us, you can join our Discord Server. https://discord.gg/PXKhXXk</p><br>
|
|
||||||
<p>Please follow <a href="{% url "main:help-rules" %}">our rules</a>. If you don't, mercy will not be laid on yourself.<br><br>You <strong>must</strong> be 13 years of age or older to join, no exceptions.<br>If you are suspected to be younger than 12 years old, the moderators will decide what to do with you.</p>
|
|
||||||
<h3 class="label"><label><span class="red">*$</span> User ID: <input type="text" class="auth-input" name="username" maxlength="32" minlength="4" placeholder="ID"></label></h3>
|
|
||||||
<h3 class="label"><label>Nickname: <input type="text" class="auth-input" name="nickname" maxlength="32" placeholder="Nick/Mii name?"></label></h3>
|
|
||||||
<h3 class="label nnid"><label>Nintendo Network ID: <input type="text" class="auth-input" name="origin_id" maxlength="16" minlength="6" placeholder="NNID" data-action="{% url "main:origin-id-get" %}">
|
|
||||||
<img class="none">
|
|
||||||
</label></h3>
|
|
||||||
<h3 class="label"><label><span class="red">%</span> E-Mail address: <input type="email" class="auth-input" name="email" maxlength="254" minlength="6" placeholder="E-Mail"></label></h3>
|
|
||||||
<h3 class="label"><label><span class="red">*</span> Password: <input type="password" class="auth-input" name="password" maxlength="32" minlength="6" placeholder="Password"></label></h3>
|
|
||||||
<h3 class="label"><label><span class="red">*</span> Confirm password: <input type="password" class="auth-input" name="password_again" maxlength="32" minlength="6" placeholder="Password again"></label></h3>
|
|
||||||
{% csrf_token %}
|
|
||||||
{% if recaptcha %}
|
|
||||||
<div class="g-recaptcha" data-sitekey="{{ recaptcha }}" data-theme="dark"></div>
|
|
||||||
<script src='https://www.google.com/recaptcha/api.js'></script>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<p class="red" style="margin-bottom:6px"></p>
|
|
||||||
<button type="submit" class="button" onclick="event.preventDefault();cac();">Create Account</button>
|
|
||||||
<div class="ll">
|
|
||||||
<p>All fields with a red asterisk (<span class="red">*</span>) are required.</p>
|
|
||||||
<p>NNIDs are only required for getting a Mii and a nickname from.</p>
|
|
||||||
<p>If you do not provide a nickname but provide an NNID, the nickname will be taken from that ID. The ID's nickname, however, is prioritized over the nickname field.</p>
|
|
||||||
<p>You will be able to change your avatar after you sign up.</p>
|
|
||||||
<p><span class="red">%</span>: If you don't fill in your email address, you can't reset your password until you have one.</p>
|
|
||||||
<p><span class="red">$</span>: Your username is used to log in. It'll appear similarly to your NNID on Miiverse, below your nickname.</p>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
Reference in New Issue
Block a user