Right usage of PBKDF2 and login system questions
You should not SHA512(PBKDF2(password)). Your AES encryption key and the password hash are correlated (which may be a vector of attack in the future). A better solution is:


Generate a secure random string $r_1$ of like 64 characters
Generate another secure random string $r_2$ of like 64 characters
Derive the AES key by PBKDF2($r_1$ || password, 32)
Get a password hash from login by PBKDF2($r_2$ || password, 128)


Due to the two distince random strings used as salts both, the AES key and the password hash are much harder to correlate. You can, if you want to make the derivation of the AES key/password hash harder, use multiple rounds:


Round 0: $x_0$ = password
Round 1: $x_1$ = PBKDF2(r1 || $x_0$)
Round 2: $x_2$ = PBKDF2(r1 || $x_1$) = PBKDF2(r1 || PBKDF2(r1 || password))
...
Round n: x = PBKDF2(r1 || $x_{n-1}$)


PS:


|| means to concatenate two strings
PBKDF2(str, length) means generate a hash of length 32 bytes from the string str